# Ollama
# 指令
## 執行本機模型
```
ollama run <model_name>
```
| 常用模型 | 指令 | 來源 |
| -------- | -------- | -------- |
| llama2 | ollama run llama2 | -- |
| Llama 2 13B | ollama run llama2:13b | -- |
| Llama 2 70B | ollama run llama2:70b | -- |
| gemma:2b | ollama run gemma:2b | -- |
| gemma:7b | ollama run gemma:7b | -- |
| Orca Mini | ollama run orca-mini | -- |
:::warning
b: billion,模型參數的數量。一般而言,越高的參數數量的模型表現越好,但是同時也需要越大量的運算資源及記憶體。
fp16: 參數最高精確度的模型,通常是表現最好的。
q: 量化模型 (quantized models) 透過降低參數數值精準度來縮減模型大小,進而增加運算速度並減少記憶體的需求。一般而言,降低到 q6-q4都還能提供不錯的表現,但實際效果依模型而定。
:::
## 顯示已下載的模型
```
ollama list
```
## 刪除模型
```
ollama rm <model_name>
```
## 僅安裝模型(不執行)
```
ollama pull <model_name>
```
## 複製模型 (用於客製化模型)
```
ollama cp <model_name_1> <model_name_2>
```
## Python ollama
```python=
import asyncio
from ollama import AsyncClient
import json
# 使用非同步事件循環執行聊天
async def main():
client = AsyncClient(host='https://4951-34-28-123-43.ngrok-free.app')
response = await client.chat(
model='gemma',messages=[{'role': 'user',
'content': '你是誰?'
}])
# 處理同步的回應
print('Original_message',response)
print('Model',response['model'])
print('time',response['created_at'])
print('role',response['message']['role'])
print('content',response['message']['content'])
print('done',response['done'])
asyncio.run(main())
```
## 導入多種格式的模型
請參考此教學
[從 Hugging Face 導入模型至 OLlama](https://hackmd.io/@H4RF-OwZTV2RIUC-66D55g/S1Gao8_a6)
## 量化大型模型:縮小參數量,讓小電腦也能跑大模型
在 hugging face 上的原始模型動輒都 13 GB 起跳, 在效能較低的電腦中甚至不能跑, 以下是將大型模型量化的教學, 並提供多種量化方式, 以最佳的參數量適應不同的電腦。
大部分 hugging face 上的模型檔都是 .safetensors 檔案格式:

如果要使用這種模型檔需要全部都下載下來, 因為其他檔案是其權重檔。
而 Ollama 也不好處理此模型檔, 建議還是轉成 gguf 格式較為方便。
如果要轉成 gguf 格式就需要使用到 **llama.cpp** , 之後的量化也是由它來完成。
### 安裝 llama.cpp
ollama 開發的 llama.cpp 可以用於將 .safetensors 模型檔轉換成 gguf 模型檔, 轉成 gguf 檔有助於直接導入到 OLlama 之中, 並且可以上傳至 hugging face 讓其他人可以輕鬆取得模型檔, 不需要再次將整個模型與其他參數都下載下來。
[前往 github 下載](https://github.com/ggerganov/llama.cpp/releases)
windows 下載 avx2.zip (用於轉換成 gguf 檔) 與 Source code.zip (用於量化模型)
如果是 linux 下載 source 即可
