因為要做項目,實驗室的服務器不聯網,所以只能先打包一個基礎的docker環境,然后再在實驗室的服務器上進行解壓和配置環境
參考:https://zhuanlan.zhihu.com/p/23377266873
1.打包基礎的docker環境
這里最好用有cuda的,我選擇跟服務器匹配的cuda環境,安裝系統依賴的時候,最好安裝一個curl,我搞忘了
# 使用帶有CUDA支持的PyTorch官方鏡像
FROM pytorch/pytorch:2.2.1-cuda12.1-cudnn8-runtime# 設置工作目錄
WORKDIR /usr/src/app# 安裝其他系統依賴
RUN apt-get update && apt-get install -y \openssh-server \vim \&& apt-get clean \&& rm -rf /var/lib/apt/lists/*# 3. 配置SSH服務
RUN mkdir /var/run/sshd && \echo 'root:123456' | chpasswd && \sed -i 's/#PermitRootLogin prohibit-password/PermitRootLogin yes/' /etc/ssh/sshd_config && \sed -i 's/#PasswordAuthentication yes/PasswordAuthentication yes/' /etc/ssh/sshd_config
構建鏡像
docker build -t ollama-llm .
docker run -it ollama-llm bash
打包鏡像
docker ps -a //查看容器ID
docker commit 368369a3c853【查到的ID】 ubuntu:test
導出:docker image save ubuntu:test -o sl_sum.tar【名字】
2.下載需要在服務器上進行安裝的資源:
下載大模型:我選擇的是deepseek-1.5b的gguf模型
https://huggingface.co/roleplaiapp/DeepSeek-R1-Distill-Qwen-1.5B-Q2_K-GGUF/tree/main
下載https://github.com/ollama/ollama/releases/里面對應的ollama-linux-amd64.tgz
把這個上傳到服務器指定位置
3.在服務器上進行配置
(1)移動、解壓文件、權限配置:
//移動
mv ~/data1/lib/ollama-linux-amd64.tgz /usr/src/app/ollama
mv ~/data1/lib/deepseek-r1-distill-qwen-1.5b-q2_k.gguf /usr/src/app/ollama/models
//解壓
在/usr/src/app/ollama# 這個路徑下
tar -C /usr -xzf ollama-linux-amd64.tgz
//權限配置
chmod +x /usr/bin/ollama
useradd -r -s /bin/false -m -d /usr/share/ollama ollama
(2)配置ollama.service
命令:
vi /etc/systemd/system/ollama.service
ollama.service文件:
[Unit]
Description=Ollama Service
After=network-online.target[Service]
ExecStart=/usr/bin/ollama serve
User=ollama
Group=ollama
Restart=always
RestartSec=3
# 你模型的位置
Environment="OLLAMA_MODELS=/usr/src/app/ollama/models"
# 你要從外面調用服務器的模型一定要設置為這個
Environment="OLLAMA_HOST=0.0.0.0:11434"
[Install]
WantedBy=default.target
(3)啟動服務
## 啟動Ollama服務
ollama serve
要注意:
這里如果是127.0.0.1,本地是連不上服務器的
再打開前記得配置一下:
export OLLAMA_HOST=0.0.0.0:11434
再進行ollama serve,如果顯示0.0.0.0:11434,就對了。
(4)配置模型:
創建Modelfile文件:
//在/models,這里面我放了ds的gguf模型
//創建Modelfile文件,跟模型一個文件夾 /usr/src/app/ollama/models#
vim deepseek.Modelfile
寫入Modelfile文件,可以自定義輸出格式:
# 這里的名字,跟你模型要一樣
FROM ./deepseek-r1-distill-qwen-1.5b-q2_k.gguf
TEMPLATE """{{ if .System }}<|im_start|>system
{{ .System }}<|im_end|>
{{ end }}{{ if .Prompt }}<|im_start|>user
{{ .Prompt }}<|im_end|>
{{ end }}<|im_start|>assistant
"""
SYSTEM """
你是一個樂于助人的助手,你需要用正經的風格去回答問題。
"""
4.開啟服務
(1)在容器中:
//在/models
//格式:ollama create (name) -f (Modelfile地址)
ollama create deepseek:1.5b -f ./deepseek.Modelfile
使用模型:
ollama run deepseek:1.5b "請用幾句話寫一個中文笑話"
(2)在本地調用
## 啟動Ollama服務
ollama serve
在本地打開一個cmd
curl http://10.20.26.187:11434/api/generate -d '{"model": "deepseek:1.5b","prompt": "請簡單介紹自己","stream": true #是否采用流式輸出
}'