Pickle 가중치는 데이터를 불러오는 일이 아니야
예전 .bin 형식은 Python pickle을 사용해. pickle을 읽는 과정은 제작자가 넣은 코드를 실행할 수 있으므로 악성 파일은 네트워크 연결, 환경 변수 유출, SSH 파일 변조까지 Python 프로세스 권한으로 할 수 있어. 실제 Hub에서도 악성 모델이 발견됐어.
Safetensors는 실행할 코드를 담지 않아
Safetensors는 메타데이터와 offset이 든 JSON 헤더, 원시 tensor 바이트만 저장해. opcode가 없어 임의 코드 실행 표면이 없고 memory mapping을 지원해 Python 할당을 줄이며 빠르게 읽을 수 있어.
안전한 파일만 받도록 명시해
Transformers 4.34부터 save_pretrained의 기본값은 safetensors야. 저장소에 .bin과 .safetensors가 함께 있다면 snapshot_download에 ignore_patterns=['*.bin']을 넘겨 pickle 파일을 아예 받지 마.