在Ollama中載入自己建立的模型

參考資料

官方教學:https://github.com/ollama/ollama/blob/main/docs/import.md

網路教學:https://www.youtube.com/watch?v=fnvZJU5Fj3Q

基於已有的模型導入 Safetensors 權重

首先就是建立一個Modelfile.txt

例如假如我是用https://ollama.com/markliou/breeze-7b這個做為基礎模型,然後自己建立的LORA微調檔案在data資料夾底下,

則Modelfile.txt的內容如下:

FROM mistral:v0.1
ADAPTER ./data/

現在從創建 Modelfile 的目錄運行 ollama create,可以使用-f來指定Modelfile路徑,如果不指定就會在你cmd當前資料夾尋找:

ollama create my-breeze -f ./Modelfile.txt

可以使用參數 --quantize來運行不同的量化級別

$ ollama create --quantize q4_K_M my-breeze
transferring model data
quantizing F16 model to Q4_K_M
creating new layer sha256:735e246cc1abfd06e9cdcf95504d6789a6cd1ad7577108a70d9902fef503c1bd
creating new layer sha256:0853f0ad24e5865173bbf9ffcc7b0f5d56b66fd690ab1009867e45e7d2c4db0f
writing manifest
success

如果你是下載別人的LoRA,而別人的LoRA用的是.bin檔案,則可以使用transformers庫來做轉換,轉成.safetensors

from transformers import AutoModel, AutoTokenizer

# 載入模型和標記器
model = AutoModel.from_pretrained("./")
tokenizer = AutoTokenizer.from_pretrained("./")
# 儲存為 GGUF 格式
model.save_pretrained("./")  
tokenizer.save_pretrained("./") 

直接導入GGUF的模型

Ollama的From所導入的模型應為GGUF格式,可以透過像 llama.cpp 這樣的工具來將模型轉換為 ggml 或 gguf 格式。

安裝llama.cpp

git clone https://github.com/ggerganov/llama.cpp
cd llama.cpp
make

接著將下載的 .safetensors 模型放置於適當位置,然後開始轉換

# 假設模型放置於 models/Breeze-7B-FC-v1_0 目錄下
./llama.cpp -m models/Breeze-7B-FC-v1_0/model.safetensors -t models/Breeze-7B-FC-v1_0/tokenizer.json -w models/Breeze-7B-FC-v1_0/ggml-model-f16.bin --quant 4

注意!不同模型的結構和參數可能有所差異,並非所有模型都能順利轉換為 GGUF。這邊有失敗經驗

https://github.com/ollama/ollama/issues/5195

要導入 GGUF 模型,創建一個Modelfile,包含:

FROM /path/to/file.gguf

接著就可以創建了,CMD需指向你Modelfile.txt的位置

ollama create my-model -f ./Modelfile.txt

17年資歷女工程師,專精於動畫、影像辨識以及即時串流程式開發。經常組織活動,邀請優秀的女性分享她們的技術專長,並在眾多場合分享自己的技術知識,也活躍於非營利組織,辦理活動來支持特殊兒及其家庭。期待用技術改變世界。