為什麼要使用Docker來運行Ollama
使用 Docker 來運行 Ollama 可以提供許多優點,包括簡化設置、可移植性、隔離、資源管理、可擴展性和可重複性。可以把Ollama變成一個API服務,提供其他的應用程式直接使用API的方式來呼叫Ollama,並運行不同的本地端模型。而把Ollama變為一個Docker服務,更可以在多台機器上分發 Ollama 模型。這對於需要在高可用性環境中運行 Ollama 的情況非常有用。
以下為Ollama的API手冊
https://github.com/ollama/ollama/blob/main/docs/api.md
利用Docker來運行服務的狀況
以下是一些使用 Docker 運行 Ollama 的具體示例:
- 在您的本地機器上開發和測試 Ollama 模型: Docker 允許您在本地機器上設置一個隔離的環境來開發和測試 Ollama 模型。這可以幫助您確保模型在部署到生產環境之前按預期工作。
- 在生產環境中部署 Ollama 模型: Docker 可用於在生產環境中部署 Ollama 模型。您可以使用 Docker 映像來創建和管理 Ollama 服務器,這些服務器可以提供對模型的 API 訪問。
- 在多台機器上分發 Ollama 模型: Docker 可用於在多台機器上分發 Ollama 模型。這對於需要在高可用性環境中運行 Ollama 的情況非常有用。
其中最重要好處的會是第三點,當我們把本地端LLM視為一個API服務,便可以對此服務做平衡負載,並根據使用量來增加機器,擴張服務的Scale,讓整體服務具備有良好的擴充性。
安裝Ollama Docker image
官方網站: https://hub.docker.com/r/ollama/ollama
Ollama 使得在本地啟動和運行大型語言模型變得容易。
僅 CPU
docker run -d -v ollama:/root/.ollama -p 11434:11434 --name ollama ollama/ollama
Nvidia GPU
使用 Apt 安裝
Configure the repository 配置存儲庫
curl -fsSL https://nvidia.github.io/libnvidia-container/gpgkey \
| sudo gpg --dearmor -o /usr/share/keyrings/nvidia-container-toolkit-keyring.gpg
curl -s -L https://nvidia.github.io/libnvidia-container/stable/deb/nvidia-container-toolkit.list \
| sed 's#deb https://#deb [signed-by=/usr/share/keyrings/nvidia-container-toolkit-keyring.gpg] https://#g' \
| sudo tee /etc/apt/sources.list.d/nvidia-container-toolkit.list
sudo apt-get update
安裝 NVIDIA Container Toolkit 軟體包
sudo apt-get install -y nvidia-container-toolkit
使用 Yum 或 Dnf 安裝
配置存儲庫
curl -s -L https://nvidia.github.io/libnvidia-container/stable/rpm/nvidia-container-toolkit.repo \
| sudo tee /etc/yum.repos.d/nvidia-container-toolkit.repo
安裝 NVIDIA Container Toolkit 軟體包
sudo yum install -y nvidia-container-toolkit
配置 Docker 以使用 Nvidia 驅動程式
sudo nvidia-ctk runtime configure --runtime=docker
sudo systemctl restart docker
啟動容器
docker run -d --gpus=all -v ollama:/root/.ollama -p 11434:11434 --name ollama ollama/ollama
AMD GPU
要使用帶有 AMD GPU 的 Docker 執行 Llama,請使用標籤 rocm
和以下命令:
docker run -d --device /dev/kfd --device /dev/dri -v ollama:/root/.ollama -p 11434:11434 --name ollama ollama/ollama:rocm
在本地運行模型
docker exec -it ollama ollama run llama3