Hugging Face๊ฐ ์ธ๋ถ ๋ณด์ ๊ฐ์ฌ๋ฅผ ํตํด safetensors ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ ์์ ์ฑ์ ๊ฒ์ฆํ์ฌ transformers์ ๊ธฐ๋ณธ ํฌ๋งท์ผ๋ก ์ฑํ
๐ถSafetensors audited as really safe and becoming the default
AI ์์ฝ
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๋ฐฐ์ ๋ก๋ฉ ์ฑ๋ฅ ํฅ์๊ณผ ํจ๊ป ์ ์ฑ ๋ชจ๋ธ ํ์ผ ๋ก๋ฉ์ผ๋ก ์ธํ ๋ณด์ ์นจํด ์ํ์ ์ ๊ฑฐํ ์ ์๋ค.