Hugging Face Safetensors 보안 감사 및 기본 채택
Safetensors를 기본 모델 형식으로 전환
Hugging Face는 EleutherAI 및 Stability AI와 협력하여 safetensors 라이브러리를 저장된 모델의 기본 형식으로 만들기 위해 나아가고 있습니다. 이 결정은 Trail of Bits가 수행한 외부 보안 감사를 뒤따르며, 해당 감사에서 라이브러리가 안전하고 광범위한 채택에 준비되었음이 확인되었습니다.
PyTorch pickle의 보안 취약점
safetensors는 본질적으로 안전하지 않은 PyTorch의 pickle 사용을 대체하기 위해 개발되었습니다. pickle은 임의 코드를 실행할 수 있기 때문에, 모델인 척하는 악성 파일이 사용자의 컴퓨터를 사용자의 인지 없이 완전히 제어할 수 있습니다.
이 취약점은 컴퓨터 보안 분야에서 잘 문서화되어 있고 PyTorch 문서에서도 인정되고 있지만, 보다 넓은 머신러닝 커뮤니티에서는 일반적으로 알려져 있지 않습니다. 이는 모든 사용자가 모델을 업로드하고 공유할 수 있는 Hugging Face Hub와 같은 플랫폼에 큰 위험을 초래합니다.
safetensors의 기술적 장점
보안을 넘어, safetensors는 기존 포맷에 비해 여러 기술적 이점을 제공합니다:
- Framework Agnostic: 이 라이브러리는 PyTorch, TensorFlow, JAX, PaddlePaddle, NumPy 등 여러 프레임워크에서 텐서를 저장하고 로드하는 것을 지원합니다.
- Performance: 로딩 속도가 일반적으로 더 빠르며, 다른 포맷에 비해 CPU에서 최대 100배까지 빠릅니다.
- Lazy Loading:
safetensors는 효율적인 지연 로딩을 가능하게 하여 텐서의 특정 부분만 로드할 수 있습니다. 이는text-generation-inference와 같은 효율적인 추론 라이브러리가 LLaMA 및 StarCoder와 같은 대형 언어 모델(LLM)을 다양한 하드웨어 구성에서 임의 샤딩을 통해 로드하는 데 중요합니다.
Trail of Bits 보안 감사 결과
라이브러리의 안전성을 검증하기 위해 Trail of Bits가 외부 감사를 수행했습니다. 주요 결과는 다음과 같습니다:
- No Critical Flaws: 임의 코드 실행을 초래하는 중요한 보안 결함이 발견되지 않았습니다.
- Specification Fixes: 감사 과정에서 사양 포맷의 부정확성이 식별되고 수정되었습니다.
- Validation Improvements: "polyglot files"를 허용하는 문제가 식별되어 향상된 검증을 통해 해결되었습니다.
- Test Suite Enhancements: 감사 결과 라이브러리 테스트 스위트에 다수의 개선이 이루어졌습니다.
Rust로 구현된 이 라이브러리는 언어 자체가 제공하는 추가적인 보안 계층을 제공합니다.
구현 로드맵
safetensors를 기본 포맷으로 전환하는 작업은 다음 단계에 따라 진행될 것입니다:
Transformers와의 통합
transformers 라이브러리 내에서 Hugging Face는 다음 순서를 구현하고 있습니다:
- Creation and Verification: 지연 로딩, 프레임워크 간 호환성, 로드 속도에 대한 약속을 형식이 충족하는지 확인합니다.
- Security Validation: 외부 감사를 통해 안전성을 확인합니다.
- Core Dependency:
safetensors를transformers라이브러리의 핵심 의존성으로 만듭니다. - Default Saving Format: 몇 달 안에
safetensors를 기본 저장 포맷으로 전환하여 중단을 최소화합니다.
생태계 채택
EleutherAI는 이미 LM Evaluation Harness에 safetensors 지원을 추가했으며, GPT-NeoX 분산 학습 라이브러리에 통합 작업을 진행 중입니다. 이 포맷은 Civitai, Stable Diffusion Web UI, dfdx, LLaMA.cpp 등 다른 생태계 도구에서도 이미 활용되고 있습니다.