ollama 的官網(wǎng)词疼,https://ollama.com/download/linux 葱轩,執(zhí)行 curl -fsSL https://ollama.com/install.sh | sh
安裝 ollama 工具
root@gpu-01:~# curl -fsSL https://ollama.com/install.sh | sh
>>> Installing ollama to /usr/local
>>> Downloading Linux amd64 bundle
######################################################################## 100.0%
>>> Creating ollama user...
>>> Adding ollama user to render group...
>>> Adding ollama user to video group...
>>> Adding current user to ollama group...
>>> Creating ollama systemd service...
>>> Enabling and starting ollama service...
Created symlink /etc/systemd/system/default.target.wants/ollama.service → /etc/systemd/system/ollama.service.
>>> NVIDIA GPU installed.
root@gpu-01:~# systemctl status ollama.service
● ollama.service - Ollama Service
Loaded: loaded (/etc/systemd/system/ollama.service; enabled; vendor preset: enabled)
Active: active (running) since Thu 2025-02-20 17:28:09 CST; 42s ago
Main PID: 2587049 (ollama)
Tasks: 16 (limit: 629145)
Memory: 30.3M
CPU: 1.187s
CGroup: /system.slice/ollama.service
└─2587049 /usr/local/bin/ollama serve
Feb 20 17:28:09 gpu-01 ollama[2587049]: time=2025-02-20T17:28:09.479+08:00 level=INFO source=routes.go:1237 msg="Listening on 127.0.0.1:11434 (version 0.5.11)"
Feb 20 17:28:09 gpu-01 ollama[2587049]: time=2025-02-20T17:28:09.480+08:00 level=INFO source=gpu.go:217 msg="looking for compatible GPUs"
Feb 20 17:28:10 gpu-01 ollama[2587049]: time=2025-02-20T17:28:10.639+08:00 level=INFO source=types.go:130 msg="inference compute" id=GPU-a6c24381-350f-1bbf-ddcb-73134a32f102 library=cuda variant=v12 compute=8.9 driver=12.4 name>
Feb 20 17:28:10 gpu-01 ollama[2587049]: time=2025-02-20T17:28:10.639+08:00 level=INFO source=types.go:130 msg="inference compute" id=GPU-b8d55e89-ad1f-174f-e0b1-3a1f8f2de308 library=cuda variant=v12 compute=8.9 driver=12.4 name>
Feb 20 17:28:10 gpu-01 ollama[2587049]: time=2025-02-20T17:28:10.639+08:00 level=INFO source=types.go:130 msg="inference compute" id=GPU-d379c82c-0587-adde-abde-457b161eea9a library=cuda variant=v12 compute=8.9 driver=12.4 name>
Feb 20 17:28:10 gpu-01 ollama[2587049]: time=2025-02-20T17:28:10.639+08:00 level=INFO source=types.go:130 msg="inference compute" id=GPU-300527ee-a553-e108-8f70-7255143c77e8 library=cuda variant=v12 compute=8.9 driver=12.4 name>
Feb 20 17:28:10 gpu-01 ollama[2587049]: time=2025-02-20T17:28:10.639+08:00 level=INFO source=types.go:130 msg="inference compute" id=GPU-f0eef8c7-621a-6bbf-39d3-9258c5653ddb library=cuda variant=v12 compute=8.9 driver=12.4 name>
Feb 20 17:28:10 gpu-01 ollama[2587049]: time=2025-02-20T17:28:10.639+08:00 level=INFO source=types.go:130 msg="inference compute" id=GPU-604933dd-5b25-190e-3e3a-1371d6f0b745 library=cuda variant=v12 compute=8.9 driver=12.4 name>
Feb 20 17:28:10 gpu-01 ollama[2587049]: time=2025-02-20T17:28:10.639+08:00 level=INFO source=types.go:130 msg="inference compute" id=GPU-e76e16fd-2ced-a768-1371-8203afd42b36 library=cuda variant=v12 compute=8.9 driver=12.4 name>
Feb 20 17:28:10 gpu-01 ollama[2587049]: time=2025-02-20T17:28:10.639+08:00 level=INFO source=types.go:130 msg="inference compute" id=GPU-0b6b5e0c-994d-1d6a-378c-ef015bf9029d library=cuda variant=v12 compute=8.9 driver=12.4 name>
root@gpu-01:~# ollama -v
ollama version is 0.5.11
更改模型默認(rèn)存放路徑到其他目錄
root@gpu-01:~# systemctl stop ollama.service
root@gpu-01:~# cd /usr/local/share/
root@gpu-01:/usr/share# mv ollama/ /nvme1/
root@gpu-01:/usr/share# ln -s /nvme1/ollama/ .
root@gpu-01:~# systemctl start ollama.service
下載運(yùn)行模型
root@gpu-01:~# ollama run llama3.3
pulling manifest
pulling 4824460d29f2... 100% ?????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????? 42 GB
pulling 948af2743fc7... 100% ?????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????? 1.5 KB
pulling bc371a43ce90... 100% ?????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????? 7.6 KB
pulling 53a87df39647... 100% ?????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????? 5.6 KB
pulling 56bb8bd477a5... 100% ?????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????? 96 B
pulling c7091aa45e9b... 100% ?????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????? 562 B
verifying sha256 digest
writing manifest
success
>>> 你好
很高興見到你裳瘪!今天我能為您做什么?
>>> 模型推理有哪些工具生真?
模型推理是一個(gè)用于分析和解釋機(jī)器學(xué)習(xí)(ML)模型的過程铣除。以下是一些流行的工具:
1. **LIME(局部可解釋模型-agnostic解釋)**:一個(gè)開源庫(kù)闹丐,用于生成可解釋的模型阱高,以幫助理解預(yù)測(cè)赚导。
2. **SHAP(SHapley 加值解釋)**:另一個(gè)開源庫(kù),它將每個(gè)特征對(duì)預(yù)測(cè)結(jié)果的貢獻(xiàn)分配給一個(gè)值赤惊,稱為SHAP值吼旧。
3. **TreeExplainer**:一個(gè)用于樹基模型(如隨機(jī)森林或梯度提升)的模型解釋工具。
4. **Anchor**:一種模型推理技術(shù)荐捻,它提供了可解釋的“錨點(diǎn)”黍少,以幫助理解預(yù)測(cè)。
5. **Model Interpretability** 由 **H2O.ai** 提供:一個(gè)庫(kù)处面,用于解釋 H2O.ai 機(jī)器學(xué)習(xí)模型中的結(jié)果,包括部分依賴圖和特征重要性魂角。
6. **TensorFlow Model Analysis**:一個(gè) TensorFlow 工具,用于分析和可視化機(jī)器學(xué)習(xí)模型的性能和偏差野揪。
7. **Scikit-learn 的 permutation_importance**:Scikit-learn 庫(kù)中用于計(jì)算每個(gè)功能對(duì)模型預(yù)測(cè)結(jié)果貢獻(xiàn)的工具。
8. **ELI5(第五層解釋)**:一個(gè)庫(kù)海铆,用于可視化和解釋 Scikit-learn 和其他機(jī)器學(xué)習(xí)模型中的特征重要性和部分依賴圖。
9. **ModelTree**:一種技術(shù)卧斟,用于將復(fù)雜的機(jī)器學(xué)習(xí)模型分解為一組樹基模型,使其更容易解釋珍语。
10. **Google 的 What-If 工具**:一個(gè)基于網(wǎng)絡(luò)的工具竖幔,用于可視化和分析機(jī)器學(xué)習(xí)模型的性能、偏差和公平性拳氢。
11. **IBM 的 AI Explainability 360**:一個(gè)開源庫(kù),用于生成和評(píng)估機(jī)器學(xué)習(xí)模型中的解釋馋评。
12. **Microsoft 的 Interpret-ML**:一個(gè)庫(kù),用于解釋機(jī)器學(xué)習(xí)模型并提供模型可解釋性的見解栗恩。
這些只是可用于模型推理的許多工具中的幾個(gè)例子洪燥。選擇合適的工具取決于具體用例乳乌、所使用的機(jī)器學(xué)習(xí)框架以及需要分析的模型類型捧韵。
查看模型
// 命令行直接調(diào)用
root@gpu-01:~# ollama list
NAME ID SIZE MODIFIED
llama3.3:latest a6eb4748fd29 42 GB 2 hours ago
// 通過 ollama serve api 調(diào)用
root@gpu-01:~# curl -s http://localhost:11434/api/tags | jq
{
"models": [
{
"name": "llama3.3:latest",
"model": "llama3.3:latest",
"modified_at": "2025-02-21T11:14:42.543258402+08:00",
"size": 42520413916,
"digest": "a6eb4748fd2990ad2952b2335a95a7f952d1a06119a0aa6a2df6cd052a93a3fa",
"details": {
"parent_model": "",
"format": "gguf",
"family": "llama",
"families": [
"llama"
],
"parameter_size": "70.6B",
"quantization_level": "Q4_K_M"
}
}
]
}
通過 python 與 ollama api 交互
root@gpu-01:~# pip install ollama
root@gpu-01:~# cat demo.py
from ollama import chat
from ollama import ChatResponse
response: ChatResponse = chat(model='llama3.3:latest', messages=[
{
'role': 'user',
'content': '說(shuō)明下時(shí)間復(fù)雜度?',
},
])
print(response['message']['content'])
root@gpu-01:~# python3 demo.py
時(shí)間復(fù)雜度是指算法的運(yùn)行時(shí)間與輸入數(shù)據(jù)大小之間的關(guān)系汉操。通常用“大O”符號(hào)表示再来,記為T(n) = O(f(n)),其中n是輸入數(shù)據(jù)的大小磷瘤,f(n)是函數(shù)芒篷,它描述了算法的運(yùn)行時(shí)間隨著輸入數(shù)據(jù)大小的增長(zhǎng)而變化的趨勢(shì)针炉。
常見的時(shí)間復(fù)雜度有:
1. **O(1)**:常數(shù)時(shí)間復(fù)雜度,表示算法的運(yùn)行時(shí)間與輸入數(shù)據(jù)大小無(wú)關(guān)篡帕。
2. **O(log n)**:對(duì)數(shù)時(shí)間復(fù)雜度,表示算法的運(yùn)行時(shí)間隨著輸入數(shù)據(jù)大小的增長(zhǎng)而呈現(xiàn)對(duì)數(shù)級(jí)別的增加镰烧。
3. **O(n)**:線性時(shí)間復(fù)雜度,表示算法的運(yùn)行時(shí)間隨著輸入數(shù)據(jù)大小的增長(zhǎng)而呈現(xiàn)線性級(jí)別的增加怔鳖。
4. **O(n log n)**:線性對(duì)數(shù)時(shí)間復(fù)雜度固蛾,表示算法的運(yùn)行時(shí)間隨著輸入數(shù)據(jù)大小的增長(zhǎng)而呈現(xiàn)線性對(duì)數(shù)級(jí)別的增加。
5. **O(n^2)**:平方時(shí)間復(fù)雜度魏铅,表示算法的運(yùn)行時(shí)間隨著輸入數(shù)據(jù)大小的增長(zhǎng)而呈現(xiàn)平方級(jí)別的增加坚芜。
6. **O(2^n)**:指數(shù)時(shí)間復(fù)雜度,表示算法的運(yùn)行時(shí)間隨著輸入數(shù)據(jù)大小的增長(zhǎng)而呈現(xiàn)指數(shù)級(jí)別的增加鸿竖。
通常,我們希望算法的時(shí)間復(fù)雜度盡可能低缚忧,以保證其能夠高效地處理大規(guī)模的輸入數(shù)據(jù)悟泵。
例如:
* 二分查找算法的時(shí)間復(fù)雜度為O(log n),因?yàn)樗看慰梢詫⑺阉骺臻g減半闪水。
* 冒泡排序算法的時(shí)間復(fù)雜度為O(n^2)糕非,因?yàn)樗枰容^每一對(duì)元素。
* 快速排序算法的平均時(shí)間復(fù)雜度為O(n log n),但在最壞情況下可能達(dá)到O(n^2)朽肥。
總之禁筏,理解時(shí)間復(fù)雜度有助于我們?cè)u(píng)估算法的效率和可擴(kuò)展性,并指導(dǎo)我們選擇合適的算法來(lái)解決實(shí)際問題衡招。
查看模型的顯存占用和停止運(yùn)行中的模型
root@gpu-01:~# nvidia-smi
Fri Feb 21 13:42:28 2025
+-----------------------------------------------------------------------------------------+
| NVIDIA-SMI 550.78 Driver Version: 550.78 CUDA Version: 12.4 |
|-----------------------------------------+------------------------+----------------------+
| GPU Name Persistence-M | Bus-Id Disp.A | Volatile Uncorr. ECC |
| Fan Temp Perf Pwr:Usage/Cap | Memory-Usage | GPU-Util Compute M. |
| | | MIG M. |
|=========================================+========================+======================|
| 0 NVIDIA GeForce RTX 4090 On | 00000000:16:00.0 Off | Off |
| 31% 35C P8 16W / 450W | 7678MiB / 24564MiB | 0% Default |
| | | N/A |
+-----------------------------------------+------------------------+----------------------+
| 1 NVIDIA GeForce RTX 4090 On | 00000000:6A:00.0 Off | Off |
| 31% 35C P8 7W / 450W | 6774MiB / 24564MiB | 0% Default |
| | | N/A |
+-----------------------------------------+------------------------+----------------------+
| 2 NVIDIA GeForce RTX 4090 On | 00000000:94:00.0 Off | Off |
| 31% 36C P8 28W / 450W | 6832MiB / 24564MiB | 0% Default |
| | | N/A |
+-----------------------------------------+------------------------+----------------------+
| 3 NVIDIA GeForce RTX 4090 On | 00000000:BE:00.0 Off | Off |
| 31% 36C P8 22W / 450W | 6774MiB / 24564MiB | 0% Default |
| | | N/A |
+-----------------------------------------+------------------------+----------------------+
| 4 NVIDIA GeForce RTX 4090 On | 00000001:16:00.0 Off | Off |
| 31% 34C P8 8W / 450W | 6774MiB / 24564MiB | 0% Default |
| | | N/A |
+-----------------------------------------+------------------------+----------------------+
| 5 NVIDIA GeForce RTX 4090 On | 00000001:6A:00.0 Off | Off |
| 31% 35C P8 19W / 450W | 6832MiB / 24564MiB | 0% Default |
| | | N/A |
+-----------------------------------------+------------------------+----------------------+
| 6 NVIDIA GeForce RTX 4090 On | 00000001:94:00.0 Off | Off |
| 30% 36C P8 18W / 450W | 6832MiB / 24564MiB | 0% Default |
| | | N/A |
+-----------------------------------------+------------------------+----------------------+
| 7 NVIDIA GeForce RTX 4090 On | 00000001:BE:00.0 Off | Off |
| 31% 35C P8 16W / 450W | 7452MiB / 24564MiB | 0% Default |
| | | N/A |
+-----------------------------------------+------------------------+----------------------+
+-----------------------------------------------------------------------------------------+
| Processes: |
| GPU GI CI PID Type Process name GPU Memory |
| ID ID Usage |
|=========================================================================================|
| 0 N/A N/A 375637 C /usr/local/bin/ollama 7670MiB |
| 1 N/A N/A 375637 C /usr/local/bin/ollama 6766MiB |
| 2 N/A N/A 375637 C /usr/local/bin/ollama 6824MiB |
| 3 N/A N/A 375637 C /usr/local/bin/ollama 6766MiB |
| 4 N/A N/A 375637 C /usr/local/bin/ollama 6766MiB |
| 5 N/A N/A 375637 C /usr/local/bin/ollama 6824MiB |
| 6 N/A N/A 375637 C /usr/local/bin/ollama 6824MiB |
| 7 N/A N/A 375637 C /usr/local/bin/ollama 7444MiB |
+-----------------------------------------------------------------------------------------+
root@gpu-01:~# ollama stop llama3.3:latest
deepseek-r1:70b 模型使用
root@gpu-01:~# ollama pull deepseek-r1:70b
pulling manifest
pulling 4cd576d9aa16... 100% ▕████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████▏ 42 GB
pulling 369ca498f347... 100% ▕████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████▏ 387 B
pulling 6e4c38e1172f... 100% ▕████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████▏ 1.1 KB
pulling f4d24e9138dd... 100% ▕████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████▏ 148 B
pulling 5e9a45d7d8b9... 100% ▕████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████▏ 488 B
verifying sha256 digest
writing manifest
success
root@gpu-01:~# ollama list
NAME ID SIZE MODIFIED
deepseek-r1:70b 0c1615a8ca32 42 GB 2 minutes ago
llama3.3:latest a6eb4748fd29 42 GB 3 hours ago
root@gpu-01:~# ollama run deepseek-r1:70b
>>> udp有沒有擁塞控制州刽?
<think>
</think>
UDP(用戶數(shù)據(jù)報(bào)協(xié)議)本身不具有擁塞控制機(jī)制浪箭。以下是詳細(xì)原因及相關(guān)信息:
### 1. **UDP 的特點(diǎn)**
- **無(wú)連接**: UDP 是無(wú)連接的協(xié)議奶栖,數(shù)據(jù)報(bào)的發(fā)送和接收不需要建立連接驼抹。
- **盡力而為_delivery**: UDP 不保證數(shù)據(jù)報(bào)的可靠遞送,可能會(huì)出現(xiàn)丟包流椒、亂序等情況宣虾。
- **輕量級(jí)**: UDP 的頭部較小绣硝,只有8個(gè)字節(jié)鹉胖,處理開銷低够傍。
### 2. **擁塞控制的缺失**
- **無(wú)內(nèi)置機(jī)制**: UDP 協(xié)議本身不包含擁塞控制的機(jī)制冕屯,因此發(fā)送方不會(huì)根據(jù)網(wǎng)絡(luò)狀況調(diào)整數(shù)據(jù)傳輸速率安聘。
- **可能導(dǎo)致網(wǎng)絡(luò)擁塞**: 如果發(fā)送方以高速度持續(xù)發(fā)送數(shù)據(jù)瓢棒,可能會(huì)導(dǎo)致網(wǎng)絡(luò)帶寬被耗盡音羞,尤其在網(wǎng)絡(luò)環(huán)境復(fù)雜或帶寬有限的情況下嗅绰。
### 3. **應(yīng)用場(chǎng)景**
盡管 UDP 缺乏擁塞控制窘面,但它在某些場(chǎng)景下仍然是合適的選擇:
- **實(shí)時(shí)性要求高**: 如視頻會(huì)議财边、在線游戲等酣难,對(duì)延遲敏感但可容忍部分?jǐn)?shù)據(jù)丟失黑滴。
- **廣播或多播**: UDP 支持一對(duì)多或多對(duì)多的通信袁辈,適用于流媒體和在線直播。
### 4. **解決方案**
如果需要在 UDP 通信中實(shí)現(xiàn)擁塞控制,可以采取以下措施:
- **應(yīng)用層實(shí)現(xiàn)**: 在應(yīng)用程序中手動(dòng)控制發(fā)送速率冈敛,根據(jù)反饋調(diào)整數(shù)據(jù)傳輸速度。
- **使用其他協(xié)議**: 如果需要可靠傳輸和擁塞控制椎侠,可以選擇 TCP 或其他支持擁塞控制的協(xié)議慎宾。
### 總結(jié)
UDP 不具備內(nèi)置的擁塞控制機(jī)制,適用于對(duì)實(shí)時(shí)性要求高但可容忍數(shù)據(jù)丟失的場(chǎng)景汹碱。對(duì)于需要可靠傳輸和擁塞控制的應(yīng)用,建議使用 TCP 或在應(yīng)用層實(shí)現(xiàn)相關(guān)功能褂删。