起因是用 model.load_state_dict(torch.load())加載pt權重文件時,出現錯誤:_pickle.UnpicklingError: invalid load key, ‘v’.
GPT告訴我:你的 pt 文件不是權重文件,而是模型整體保存(或根本不是 PyTorch 文件)。
很懵,因為這個后綴就是pt,根據GPT提供的思路檢查文件前面的字符:
with open("ckpt/primedp.middle.pt", "rb") as f:head = f.read(64)print(head)
把輸出貼到GPT上面告訴我拿到的根本不是模型文件,而是一個 Git LFS(Large File Storage)占位符文本文件,它只記錄了文件的元信息(如 hash 值),并不包含模型數據本身。檢查才發現下載的文件大小為1kb。
為什么會這樣?因為GitHub 上有些大型 .pt 文件(幾百 MB 甚至更大)會被托管到 Git LFS,普通 git clone 或右鍵“另存為”操作 不會下載真實文件,只會下載一個占位符。
那么,如何正確下載 Git LFS 文件?(摩拳擦掌)
1、(windows)下載Git LFS
2、打開cmd
git lfs install
git clone git倉庫網址
cd 下載目錄
git lfs pull
這將確保你下載到的是完整的模型權重文件,而不是占位符。
然而!新的問題來了,git lfs pull
報錯batch response: This repository is over its data quota. Account responsible for LFS bandwidth should purchase more data packs to restore access.
表明是GitHub LFS 限流問題,意思是:GitHub 倉庫的 LFS 文件流量額度已經用完了!
GitHub 對每個賬戶的 Git LFS(大文件)下載流量有限制(默認每月 1GB 下載額度)。一旦超過,就會顯示這個錯誤,即使你用 git lfs pull,也下載不了模型權重文件。
一開始以為我的下載額度滿了,接下來GPT的回復又驚喜了!!情緒價值拉滿!