本文档描述了如何使用 Llama 3 和 Ollama 设置 Retrieval-Augmented Generation (RAG) 系统的 Docker 容器。
以下是步骤分解:
使用 Ollama Docker 镜像:Ollama 提供了一个 Docker 镜像(ollama/ollama:latest
),其中包含了运行 Llama 3 所需的所有组件。
提供了一个示例 Dockerfile,定义了多个服务:
ollama-faqs
: 此服务运行一个使用 Ollama 的问答应用程序。
ollama
: 这是核心的 Ollama 服务。
ollama-webui
: 此服务提供一个与 Ollama 交互的网页界面。这个设置允许你使用 Docker 容器部署一个完整的 RAG 系统,其中包括 Llama 3 和 Ollama。
这里有个窍门:在你的终端中执行以下命令:
$ docker ps aa492e7068d7 ollama/ollama:latest "/bin/ollama serve" 9 秒前 Up 8 秒 0.0.0.0:11434->11434/tcp ollama
$ curl localhost:11434 Ollama 正在运行
Ollama 默认绑定 127.0.0.1 的 11434 端口。可以通过 OLLAMA_HOST 环境变量更改绑定地址。
model = Ollama(model=MODEL, base_url='http://ollama:11434')
version: "3.9" services: ollama-faqs: image: ollama-app env_file: - .env networks: - ollama-network ports: - 8000:8080 depends_on: - ollama ollama: image: ollama/ollama:latest ports: - 7869:11434 volumes: - .:/code - ./ollama/ollama:/root/.ollama container_name: ollama pull_policy: always tty: true restart: always environment: - OLLAMA_KEEP_ALIVE=24h - OLLAMA_HOST=0.0.0.0 networks: - ollama-network ollama-webui: image: ghcr.io/open-webui/open-webui:main container_name: ollama-webui volumes: - ./ollama/ollama-webui:/app/backend/data depends_on: - ollama ports: - 8080:8080 environment: # https://docs.openwebui.com/getting-started/env-configuration#default_models - OLLAMA_BASE_URLS=http://host.docker.internal:7869 # 用逗号分隔的 ollama 主机 - ENV=dev - WEBUI_AUTH=False - WEBUI_NAME=valiantlynx AI - WEBUI_URL=http://localhost:8080 - WEBUI_SECRET_KEY=t0p-s3cr3t extra_hosts: - host.docker.internal:host-gateway restart: unless-stopped networks: - ollama-network networks: ollama-network: external: true
https://hub.docker.com/r/ollama/ollama
添加 GPU 到 Docker
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
可选地,配置仓库以使用实验性软件包:
sed -i -e '/experimental/ s/^#//g' /etc/apt/sources.list.d/nvidia-container-toolkit.list
从仓库更新软件包列表:
sudo apt-get update
sudo apt-get install -y nvidia-container-toolkit
nvidia-ctk
命令配置容器运行时:sudo nvidia-ctk runtime configure --runtime=docker
nvidia-ctk
命令修改主机上的 /etc/docker/daemon.json
文件。更新该文件以使 Docker 可以使用 NVIDIA Container Runtime。
sudo systemctl restart docker
gedit /etc/docker/daemon.json
{ "registry-mirrors": [ "https://registry.docker.ir" ], "runtimes": { "nvidia": { "args": [], "path": "nvidia-container-runtime" } } }
version: "3.8" # 如需调整,请更改版本 services: your-service: image: your-image:latest deploy: resources: reservations: devices: - driver: nvidia capabilities: [gpu] count: 1 # 如需调整,请更改数量
llama_new_context_with_model: CPU 输出缓冲区大小 = 0.00 MiB llama_new_context_with_model: CUDA0 计算缓冲区大小 = 23.00 MiB llama_new_context_with_model: CUDA_Host 计算缓冲区大小 = 3.50 MiB
…
访问我们的网站 DataDrivenInvestor.com
订阅 DDIntel 此处。
特色文章:
加入我们的创作者生态系统 here。
DDI 官方 Telegram 频道: https://t.me/+tafUp6ecEys4YjQ1
关注我们在 LinkedIn,Twitter,YouTube,和 Facebook。