로컬에서 모델을 받다 보면 파일 확장자가 제각각인 걸 보게 돼요. 어떤 건 .safetensors이고 어떤 건 .bin이에요. 대충 같은 거라고 넘기기 쉬운데, 불러올 때 벌어지는 일이 다릅니다.
그래서 얼마나 갈려 있는지 세어 봤어요.
결론부터 적을게요. 상위 1,000개 중 safetensors를 가진 모델은 732개예요. 그런데 142개는 pickle 계열만 있어서, 받는 쪽에서 안전한 형식을 고를 수가 없어요.
이 글이 재는 자리를 먼저 못박을게요. 공개 API가 주는 리포 파일 목록의 확장자만 봐요. 어느 모델이 악성인지는 보지 않았고, 그럴 방법도 없어요. 잰 것은 어떤 형식이 올라와 있느냐까지예요.

어떻게 쟀는지 먼저 밝힐게요
| 항목 | 값 |
|---|
| 자료 | 허깅페이스 공개 모델 API |
| 인증 | 없음 |
| 받은 모델 | 1,000개 (다운로드 많은 순) |
| 판정 기준 | 리포 안 파일 확장자 |
| 조회 일시 | 2026년 9월 4일 오전 (한국 시각) |
판정 규칙은 단순해요. .safetensors가 하나라도 있으면 safetensors 있음, .bin·.pt·.pth·.ckpt가 하나라도 있으면 pickle 계열 있음으로 세었어요.
한 가지 덧붙일게요. 파일 목록을 받으려면 API에 full 옵션을 켜야 해요. 기본 응답에는 리포 안 파일이 안 들어 있어서, 그냥 부르면 형식을 셀 수 없어요.
1,000개가 네 칸으로 갈려요
| 구분 | 모델 수 | 비율 |
|---|
| safetensors 만 | 468개 | 46.8% |
| 둘 다 올려 둠 | 264개 | 26.4% |
| pickle 계열만 | 142개 | 14.2% |
| 둘 다 없음 | 126개 | 12.6% |
safetensors를 가진 것은 위 두 칸을 더한 732개로 73.2퍼센트예요. 넷 중 셋은 안전한 형식을 쓸 수 있다는 뜻이에요.
여기서 조심할 게 있어요. 「둘 다 없음」 126개를 위험군으로 읽으시면 안 돼요. GGUF나 ONNX, 코어ML 같은 다른 형식이거나, 가중치 없이 설정만 올린 리포예요. 이 글의 판정 기준 밖이라 따로 칸을 뒀어요.
실무에서 문제가 되는 자리는 pickle 계열만 있는 142개예요. 이 경우에는 받는 쪽이 형식을 선택할 수 없어요.
왜 형식이 문제가 되나요
허깅페이스 공식 문서가 직접 적어 둔 문장으로 옮길게요.
pickle은 머신러닝에서 널리 쓰이는 직렬화 형식이고, 파이토치 모델 가중치의 기본 형식이에요. 그런데 같은 문서가 이어서 이렇게 적어요.
pickle 파일을 불러올 때 임의 코드 실행 공격이 벌어질 수 있어요.
이유는 형식의 구조에 있어요. pickle은 데이터만 담는 게 아니라 역직렬화 시점에 파이썬 코드를 돌릴 수 있도록 설계돼 있어요. 그래서 "파일을 읽는다"가 "명령을 실행한다"와 겹쳐요.
반대로 safetensors는 구조가 달라요. 공식 저장소가 형식을 이렇게 규정해요. 앞 8바이트가 헤더 크기이고, 그다음 N바이트가 JSON 헤더예요. 헤더는 반드시 { 문자로 시작해야 하고요.
헤더가 코드가 아니라 데이터라는 게 핵심이에요. 읽는 것만으로 무언가가 실행될 여지가 구조적으로 없어요. 저장소 설명도 "pickle과 달리 안전하게, 그러면서도 빠르게" 저장하는 형식이라고 적어요.

많이 받는 모델이라고 안전한 형식은 아니에요
여기가 가장 뒤집히는 대목이에요. pickle 계열만 있는 142개를 다운로드순으로 세워 봤어요.
| 다운로드 | 어떤 모델인가 | 확장자 |
|---|
| 5,699만 회 | 문장 이해용 인코더 (구글) | bin |
| 3,672만 회 | 다국어 임베딩 | bin, pt |
| 1,993만 회 | 이미지·텍스트 매칭 (오픈AI) | bin |
| 1,288만 회 | 일본어 음성 인식 | bin |
| 1,129만 회 | 음성 합성 | pt, pth |
| 967만 회 | 소형 언어 모델 (메타) | bin |
| 741만 회 | 다국어 음성 합성 | pth |
1위가 5,699만 회예요. "많이 쓰이니까 안전하겠지"라는 짐작이 형식에서는 통하지 않는다는 뜻이에요.
다시 말씀드리지만 이 목록이 위험한 모델 목록은 아니에요. 널리 쓰이고 잘 알려진 곳에서 올린 것들이에요. 확인된 것은 안전한 형식이 함께 올라와 있지 않다는 사실까지예요.
용도에 따라 스무 배 차이가 나요
파이프라인별로 갈라 보니 그림이 완전히 달라졌어요.
| 용도 | 전체 | pickle 계열만 | 비율 |
|---|
| 이미지와 글을 함께 받는 모델 | 166개 | 0개 | 0.0% |
| 문장 유사도 | 55개 | 1개 | 1.8% |
| 글 생성 | 218개 | 5개 | 2.3% |
| 이미지 분류 | 24개 | 1개 | 4.2% |
| 특징 추출 | 46개 | 9개 | 19.6% |
| 빈칸 채우기 | 34개 | 10개 | 29.4% |
| 텍스트 분류 | 33개 | 12개 | 36.4% |
| 음성 인식 | 93개 | 44개 | 47.3% |
글 생성이 2.3퍼센트인데 음성 인식은 47.3퍼센트예요. 같은 허브 안에서 스무 배 차이가 나요.
왜 이렇게 갈리는지는 이 글이 단정하지 않을게요. 모델별 최종 갱신 시점을 재지 않았거든요. 확인된 것은 용도에 따라 형식 사정이 전혀 다르다는 사실까지예요.
실무로 옮기면 이렇게 돼요. 글 생성 모델만 다루시면 형식 때문에 고민할 일이 거의 없어요. 반면 음성 인식이나 오래된 인코더 계열을 쓰시면 절반 가까이가 pickle 계열만 있어서 마주치게 돼요.
둘 다 올려 둔 264개가 알려 주는 것
네 칸 중에 조용하지만 중요한 칸이 하나 있어요. safetensors와 pickle 계열을 둘 다 올려 둔 264개예요. 전체의 26.4퍼센트고요.
같은 가중치를 두 형식으로 함께 올려 둔 자리예요. 왜 그렇게 두는지 이 글이 물어보지는 않았지만, 받는 쪽에는 분명한 뜻이 있어요. 예전 도구로도 열리고 새 형식으로도 열린다는 것이고, 무엇보다 고를 수 있다는 것이에요.
그래서 실무에서는 이 264개와 앞의 468개를 같은 칸으로 묶어 보시면 돼요. 합쳐서 732개, 안전한 형식을 선택할 수 있는 자리예요.
반대로 말하면 142개만 선택지가 없어요. 이 숫자가 이 글에서 유일하게 실무를 바꾸는 값이에요. 나머지는 "고르면 된다"로 끝나거든요.
한 가지 더 짚어 둘게요. 파일이 여러 개로 쪼개진 모델도 같은 규칙으로 셌어요. 큰 모델은 가중치를 조각으로 나눠 올리는데, 조각 중 하나라도 해당 확장자면 그 형식을 가진 것으로 판정했어요. 그래서 이 표는 「그 형식으로 받을 수 있느냐」를 세는 표이지 파일 개수를 세는 표가 아니에요.
확장자 넷을 한 칸으로 묶은 이유
pickle 계열로 묶은 확장자가 넷이에요. .bin·.pt·.pth·.ckpt고요. 이름은 달라도 불러올 때 파이썬 객체를 되살리는 같은 구조를 쓰기 때문에 한 칸으로 셌어요.
실제 분포도 그 묶음이 맞다는 쪽이었어요. 가장 흔한 것은 .bin이었고, 음성 합성 계열에서 .pt와 .pth가 함께 쓰였어요. 확장자가 다르다고 안전성이 갈리지는 않아요.
그래서 파일 목록을 보실 때 넷 중 무엇이 있느냐가 아니라 .safetensors가 있느냐를 보시는 편이 빨라요. 있으면 그걸 쓰시면 되고, 없으면 그때부터 올린 곳을 보시면 돼요.
확인할 수 있는 방법이 두 가지 있어요
형식을 고를 수 없을 때 쓸 수 있는 것도 공식 문서에 적혀 있어요.
첫째, 허브가 pickle 안의 import 목록을 보여 줘요. 문서는 이걸 "vetting"이라고 표현해요. 파일 안에서 무엇을 불러오려 하는지 화면에서 확인할 수 있어요.
둘째, pickletools로 코드를 실행하지 않고 읽을 수 있어요. 파이썬 표준 라이브러리이고, 문서가 "코드를 실행하지 않고" 명령어를 볼 수 있다는 점을 굵게 짚어 둬요.
문서가 권하는 것은 이래요. 신뢰하는 이용자나 조직의 모델을 쓰고, 서명된 커밋에 기대고, 다른 형식에서 자동 변환하는 경로를 쓰라는 것까지예요.
승인이 필요한 모델을 받을 때 걸리는 절차는 AI 모델 접근 요청이 뜨는 이유에, 상업적으로 써도 되는지는 상위 1,000개 모델의 라이선스 태그에 따로 정리해 뒀어요.

확인하지 못한 것
정직하게 적어 둘게요.
- 악성 모델을 세지 않았어요. 이 글은 형식 분포만 봤어요. pickle이라고 악성인 게 아니에요.
- 허브의 pickle 스캔 결과를 받지 않았어요.
- 모델별 최종 갱신일을 재지 않았어요. 그래서 "오래된 모델이라서"를 결론으로 쓰지 않았어요.
- GGUF나 ONNX의 안전성을 비교하지 않았어요. 다른 축이에요.
- 허브 전체를 세지 않았어요. 다운로드 상위 1,000개 안의 값이에요.
정리
세 줄로 줄이면 이래요.
첫째, 넷 중 셋은 safetensors를 쓸 수 있어요. 732개, 73.2%예요.
둘째, 142개는 고를 수가 없어요. pickle 계열만 올라와 있고, 그중에는 다운로드 5,699만 회짜리도 있어요.
셋째, 용도에 따라 스무 배 갈려요. 글 생성은 2.3%, 음성 인식은 47.3%예요.
받으실 때 파일 목록에서 .safetensors가 있는지 한 번 보는 것만으로 대부분 정리돼요. 없다면 그 모델을 올린 곳이 믿을 만한지를 한 번 더 생각해 보시면 되고요.