Как автоматически вытащить модель при создании контейнера?

При попытке получить доступ к контейнеру оллама из другой службы (узла) в моей настройке создания докера я получаю следующую ошибку:

ResponseError: модель «llama3» не найдена, попробуйте сначала извлечь ее.

Я хочу, чтобы настройка контейнеров была автоматической, и не хочу вручную подключаться к контейнерам и вручную извлекать модели. Есть ли способ автоматически загрузить выбранную мной модель при создании Docker-контейнера ollama?

Вот моя соответствующая часть docker-compose.yml

ollama:
        image: ollama/ollama:latest
        ports:
            - 11434:11434
        volumes:
            - ./ollama/ollama:/root/.ollama
        container_name: ollama
        pull_policy: always
        tty: true
        restart: always

Вы работаете в Linux? Сначала вам следует установить переменные env.

Richard Rublev 18.05.2024 18:34

разве докер не всегда Linux? :D

Sir hennihau 18.05.2024 18:41

Нет, может работать на другой ОС.

Richard Rublev 18.05.2024 19:16

да, тогда линукс

Sir hennihau 18.05.2024 20:45
Развертывание модели машинного обучения с помощью Flask - Angular в Kubernetes
Развертывание модели машинного обучения с помощью Flask - Angular в Kubernetes
Kubernetes - это портативная, расширяемая платформа с открытым исходным кодом для управления контейнерными рабочими нагрузками и сервисами, которая...
Как создать PHP Image с нуля
Как создать PHP Image с нуля
Сегодня мы создадим PHP Image from Scratch для того, чтобы легко развернуть базовые PHP-приложения. Пожалуйста, имейте в виду, что это разработка для...
1
4
1 248
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Ответ принят как подходящий

Используйте собственный сценарий точки входа для загрузки модели при запуске контейнера. Модель будет сохранена при монтировании тома, поэтому при последующих запусках это будет происходить быстро.

version: '3.7'

services:
  ollama:
    image: ollama/ollama:latest
    ports:
        - 11434:11434
    volumes:
        - ./ollama/ollama:/root/.ollama
        - ./entrypoint.sh:/entrypoint.sh
    container_name: ollama
    pull_policy: always
    tty: true
    restart: always
    entrypoint: ["/usr/bin/bash", "/entrypoint.sh"]

Ключевые изменения:

  1. Добавил entrypoint.
  2. Добавлено крепление тома для entrypoint.sh.

Вот содержание entrypoint.sh:

#!/bin/bash

# Start Ollama in the background.
/bin/ollama serve &
# Record Process ID.
pid=$!

# Pause for Ollama to start.
sleep 5

echo "🔴 Retrieve LLAMA3 model..."
ollama pull llama3
echo "🟢 Done!"

# Wait for Ollama process to finish.
wait $pid

ты Г. мне это нравится.

Furqan Ali 08.06.2024 05:03

вся русская община будет молиться за тебя, Джи

Egor-oop 09.06.2024 12:53

Это то, что сработало для меня без необходимости дополнительного монтирования для сценария входа.

services:
  ollama:
    container_name: ollama
    pull_policy: always
    build:
      context: .
      dockerfile: ollama.dockerfile
    volumes:
      - type: bind
        source: [your local path here]
        target: /root/.ollama
    ports:
      - "11434:11434"
    restart: always
FROM ollama/ollama

# Copy the script to the docker image
COPY ./wait_for_ollama.sh /wait_for_ollama.sh

# Ensure the script is executable
RUN chmod +x /wait_for_ollama.sh

EXPOSE 11434
ENTRYPOINT ["/bin/sh", "/wait_for_ollama.sh"]

Затем я использовал скрипт, предоставленный @datawookie как wait_for_ollama.sh в том же каталоге, что и файл docker.

#!/bin/bash

# Start Ollama in the background.
ollama serve &
# Record Process ID.
pid=$!

# Pause for Ollama to start.
sleep 5

echo "🔴 Retrieving model..."
ollama pull phi3:medium
echo "🟢 Done!"

# Wait for Ollama process to finish.
wait $pid

Другие вопросы по теме