為什麼要使用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
1 | docker run -d - v ollama: /root/ .ollama -p 11434:11434 --name ollama ollama /ollama |
Nvidia GPU
使用 Apt 安裝
Configure the repository 配置存儲庫
1 2 3 4 5 6 | 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 軟體包
1 | sudo apt-get install -y nvidia-container-toolkit |
使用 Yum 或 Dnf 安裝
配置存儲庫
1 2 | 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 軟體包
1 | sudo yum install -y nvidia-container-toolkit |
配置 Docker 以使用 Nvidia 驅動程式
1 2 | sudo nvidia-ctk runtime configure --runtime=docker sudo systemctl restart docker |
啟動容器
1 | docker run -d --gpus=all - v ollama: /root/ .ollama -p 11434:11434 --name ollama ollama /ollama |
AMD GPU
要使用帶有 AMD GPU 的 Docker 執行 Llama,請使用標籤 rocm
和以下命令:
1 | docker run -d --device /dev/kfd --device /dev/dri -v ollama:/root/.ollama -p 11434:11434 --name ollama ollama/ollama:rocm |
在本地運行模型
1 | docker exec -it ollama ollama run llama3 |