Notice
Recent Posts
Recent Comments
Link
| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 1 | 2 | 3 | 4 | 5 | 6 | 7 |
| 8 | 9 | 10 | 11 | 12 | 13 | 14 |
| 15 | 16 | 17 | 18 | 19 | 20 | 21 |
| 22 | 23 | 24 | 25 | 26 | 27 | 28 |
| 29 | 30 | 31 |
Tags
- FastAPI
- C++
- study book
- fastapi를 사용한 파이썬 웹 개발
- BAEKJOON
- Algorithm
- 백준
- llm을 활용 단어장 앱 개발일지
- PCA
- BFS
- pytorch
- Computer Architecture
- MATLAB
- BOF
- Kaggle
- Dreamhack
- Flutter
- DART
- ML
- system hacking
- Got
- 영상처리
- Widget
- ARM
- Image Processing
- bloc
- 파이토치 트랜스포머를 활용한 자연어 처리와 컴퓨터비전 심층학습
- Stream
- rao
- MDP
Archives
- Today
- Total
Bull
pth 파일의 매직 바이트와 ZIP 포맷 본문
- pytorch는 1.6버전 이후부터 load를 통한 Zip-based format으로 변경되었다.
- 이전에는 pickle (python 패키지)를 통해 압축했다고 한다.
- 그래서 .pth, .pt 여도 upzip 명령어나 zipfile 라이브러리로 열면 내부 구조가 보인다고 한다.
- 해킹 관점에서, pth를 바이트로 뜯으면 파일 맨 앞에 위치하는 매직 바이트를 알 수 있는데, 이 때 pth의 매직 바이트는 zip 매직 바이트인 PK (50 4B)라고 한다. (ZIP 포맷을 만든 Phil Katz의 앞글자를 딴 것)
최근 해킹 게임 사이트인 Dreamhack에 딥러닝과 포너블을 결합한 문제를 출제했는데, 나의 문제를 푼 풀이자 분께서 풀이를 작성해주셨다. 문제의 일부 중 pth 만으로 모델을 역설계를 해야하는데, pth 바이너리 스트림을 파일로 저장하지 않고, 바이너리 스트림 그대로 해석하여 모델을 유추하였다. 나는 문제를 검토할 때, 당연히 load_weights()로 불러오고 pytorch로 복원했는데, 이를 직접 numpy 부터 구현하고 가중치 정보도 기본 문법으로 불러오는 방식을 보고 놀라웠다.
이 글은 그냥 간단한 잡지식이지만, "pth가 그냥 딥러닝 model 저장하는 확장잔가 보다.." 하고 지내다가 이런 사실에 놀라서 작성했다.
'AI programming > pytorch' 카테고리의 다른 글
| [PyTorch] Object Detection IoU 병렬 구현 (0) | 2026.02.12 |
|---|---|
| [pytorch] Tensor 정리 | study book (0) | 2024.08.09 |
| [pytorch] einops.rearrange() (0) | 2024.04.13 |
