ํ”ผ๋“œ๋กœ ๋Œ์•„๊ฐ€๊ธฐ
๐ŸถSafetensors audited as really safe and becoming the default
Hugging Face BlogHugging Face Blog
Security

Hugging Face๊ฐ€ ์™ธ๋ถ€ ๋ณด์•ˆ ๊ฐ์‚ฌ๋ฅผ ํ†ตํ•ด safetensors ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์˜ ์•ˆ์ „์„ฑ์„ ๊ฒ€์ฆํ•˜์—ฌ transformers์˜ ๊ธฐ๋ณธ ํฌ๋งท์œผ๋กœ ์ฑ„ํƒ

๐ŸถSafetensors audited as really safe and becoming the default

2023๋…„ 5์›” 23์ผ8๋ถ„intermediate

Context

PyTorch๋Š” ๋‚ด๋ถ€์ ์œผ๋กœ pickle์„ ์‚ฌ์šฉํ•˜๋Š”๋ฐ, pickle์€ ์•…์˜์ ์ธ ํŒŒ์ผ์ด ์‚ฌ์šฉ์ž์˜ ์ปดํ“จํ„ฐ์— ๋Œ€ํ•œ ์™„์ „ํ•œ ์ œ์–ด๊ถŒ์„ ๊ณต๊ฒฉ์ž์—๊ฒŒ ๋ถ€์—ฌํ•  ์ˆ˜ ์žˆ๋Š” ๊ณ ์งˆ์ ์ธ ๋ณด์•ˆ ์ทจ์•ฝ์ ์„ ๊ฐ€์ง€๊ณ  ์žˆ๋‹ค. Hugging Face Hub์™€ ๊ฐ™์ด ๋ˆ„๊ตฌ๋‚˜ ๋ชจ๋ธ์„ ์—…๋กœ๋“œํ•  ์ˆ˜ ์žˆ๋Š” ํ”Œ๋žซํผ์—์„œ ์‚ฌ์šฉ์ž๋“ค์ด ์•…์„ฑ ๋ชจ๋ธ ํŒŒ์ผ๋กœ๋ถ€ํ„ฐ ๊ฐ์—ผ๋  ์œ„ํ—˜์ด ์กด์žฌํ•œ๋‹ค.

Technical Solution

  • Rust๋กœ ์ž‘์„ฑ๋œ safetensors ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ๊ฐœ๋ฐœ: ์–ธ์–ด ์ˆ˜์ค€์—์„œ ์ถ”๊ฐ€์ ์ธ ๋ณด์•ˆ ๊ณ„์ธต ์ œ๊ณต
  • PyTorch, TensorFlow, JAX, PaddlePaddle, NumPy๋ฅผ ํฌํ•จํ•œ ์ฃผ์š” ํ”„๋ ˆ์ž„์›Œํฌ ์ง€์›: ๋‹จ์ผ ํŒŒ์ผ ํฌ๋งท์œผ๋กœ ๋ชจ๋“  ํ”„๋ ˆ์ž„์›Œํฌ ํ˜ธํ™˜์„ฑ ์ œ๊ณต
  • Trail of Bits์— ์˜ํ•œ ๋…๋ฆฝ์  ์™ธ๋ถ€ ๋ณด์•ˆ ๊ฐ์‚ฌ ์ˆ˜ํ–‰: polyglot ํŒŒ์ผ ์ƒ์„ฑ ์ทจ์•ฝ์  ๋ฐœ๊ฒฌ ๋ฐ ์ˆ˜์ •, ํ…Œ์ŠคํŠธ ์Šค์œ„ํŠธ ๊ฐœ์„  ๊ตฌํ˜„
  • ์ง€์—ฐ ๋กœ๋”ฉ(lazy loading) ๊ธฐ๋Šฅ ๊ตฌํ˜„: ์ „์ฒด ํ…์„œ๊ฐ€ ์•„๋‹Œ ์ผ๋ถ€๋งŒ ํšจ์œจ์ ์œผ๋กœ ๋กœ๋“œ ๊ฐ€๋Šฅํ•˜๋„๋ก ์ง€์›
  • transformers ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์— ๋‹จ๊ณ„์  ํ†ตํ•ฉ: ํ•ต์‹ฌ ์˜์กด์„ฑ์œผ๋กœ ์ถ”๊ฐ€, ํ–ฅํ›„ ๊ธฐ๋ณธ ์ €์žฅ ํฌ๋งท์œผ๋กœ ์ „ํ™˜ ์˜ˆ์ •

Impact

  • ๋ชจ๋ธ ๋กœ๋”ฉ ์†๋„: CPU ๊ธฐ์ค€ ์•ฝ 100๋ฐฐ ํ–ฅ์ƒ
  • ๋ณด์•ˆ ๊ฐ์‚ฌ ๊ฒฐ๊ณผ: ์ž„์˜ ์ฝ”๋“œ ์‹คํ–‰์œผ๋กœ ์ด์–ด์ง€๋Š” ์น˜๋ช…์  ๋ณด์•ˆ ๊ฒฐํ•จ ๋ฐœ๊ฒฌ ์•ˆ ๋จ

Key Takeaway

๋ณด์•ˆ์ด ํ•ต์‹ฌ ๊ฐ€์น˜์ธ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋Š” ์™ธ๋ถ€ ๊ฐ์‚ฌ๋ฅผ ํ†ตํ•œ ์‹ ๋ขฐ์„ฑ ๊ฒ€์ฆ๊ณผ ํ•จ๊ป˜ ๊ณต๊ฐœ ๋ณด๊ณ ์„œ ๋ฐœํ–‰์œผ๋กœ ์ปค๋ฎค๋‹ˆํ‹ฐ ์‹ ๋ขฐ๋ฅผ ๊ตฌ์ถ•ํ•ด์•ผ ํ•œ๋‹ค. ๋ณด์•ˆ ๋ฌธ์ œ๊ฐ€ ๊ด‘๋ฒ”์œ„ํ•œ ์ƒํƒœ๊ณ„์— ๋ฏธ์น˜๋Š” ์˜ํ–ฅ์ด ํด์ˆ˜๋ก ์‚ฐ์—… ํ˜‘๋ ฅ(EleutherAI, Stability AI)์„ ํ†ตํ•œ ๊ฒ€์ฆ๊ณผ ์ ์ง„์  ๋งˆ์ด๊ทธ๋ ˆ์ด์…˜ ์ „๋žต์ด ์ค‘์š”ํ•˜๋‹ค.


๋ชจ๋ธ ์ €์žฅ์†Œ๋‚˜ AI ํ”„๋ ˆ์ž„์›Œํฌ๋ฅผ ์šด์˜ํ•˜๋Š” ์กฐ์ง์—์„œ pickle ๊ธฐ๋ฐ˜์˜ ๋ถˆ์•ˆ์ „ํ•œ ํฌ๋งท์„ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ๋‹ค๋ฉด, ์™ธ๋ถ€ ๋ณด์•ˆ ๊ฐ์‚ฌ๋ฅผ ํ†ตํ•ด ๊ฒ€์ฆ๋œ Rust ๊ธฐ๋ฐ˜์˜ safetensors๋กœ ์ „ํ™˜ํ•˜๊ณ , ํŠธ๋žœ์Šคํฌ๋จธ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์ฒ˜๋Ÿผ ์ง€์—ฐ ๋กœ๋”ฉ์„ ์ง€์›ํ•ด 100๋ฐฐ์˜ ๋กœ๋”ฉ ์„ฑ๋Šฅ ํ–ฅ์ƒ๊ณผ ํ•จ๊ป˜ ์•…์„ฑ ๋ชจ๋ธ ํŒŒ์ผ ๋กœ๋”ฉ์œผ๋กœ ์ธํ•œ ๋ณด์•ˆ ์นจํ•ด ์œ„ํ—˜์„ ์ œ๊ฑฐํ•  ์ˆ˜ ์žˆ๋‹ค.

์›๋ฌธ ์ฝ๊ธฐ