Closed19

AITuberをDockerに載せる

Sald raSald ra
ARG python_image_v="python:3.9-buster"
# python3.9のイメージをダウンロード
FROM ${python_image_v}

ARG work_dir="/src/"
WORKDIR ${work_dir}

ENV POETRY_HOME=/opt/poetry
# poetryインストール
RUN curl -sSL https://install.python-poetry.org | python - || { cat /poetry*.log; exit 1; } && \
# poetryコマンドの追加
    cd /usr/local/bin && \
    ln -s /opt/poetry/bin/poetry && \
# コンテナ前提のため,仮想環境を作らない
    poetry config virtualenvs.create false
Sald raSald ra

ちなみに罠があって、install.python-poetry.orgを使う必要があります

Sald raSald ra

poetryのurlを変える

https://download.pytorch.org/whl/cu117/torch-1.13.1%2Bcu117-cp39-cp39-linux_x86_64.whl
Sald raSald ra

変更前
torch = {url = "https://download.pytorch.org/whl/cu117/torch-1.13.1%2Bcu117-cp39-cp39-win_amd64.whl"}
変更後
torch = {url = "https://download.pytorch.org/whl/cu117/torch-1.13.1%2Bcu117-cp39-cp39-linux_x86_64.whl"}

Sald raSald ra

pytorchを使えるようにすればよいとおもったので変えた

ARG python_image_v="nvcr.io/nvidia/pytorch:22.12-py3"
# python3.9のイメージをダウンロード
FROM ${python_image_v}
RUN apt update && apt -y upgrade
ARG work_dir="/src/"

RUN apt-get update && apt-get install -y
# コンテナにアクセスした際のデフォルトディレクトリ
WORKDIR ${work_dir}

# poetryのインストール先の指定
ENV POETRY_HOME=/opt/poetry
# poetryインストール
RUN curl -sSL https://install.python-poetry.org | python - || { cat /poetry*.log; exit 1; } && \
# シンボリックによるpathへのpoetryコマンドの追加
    cd /usr/local/bin && \
    ln -s /opt/poetry/bin/poetry && \
# 仮想環境を作成しない設定(コンテナ前提のため,仮想環境を作らない)
    poetry config virtualenvs.create false
Sald raSald ra

pipもpoetryも使えるようになったし、pipで無理やりtorch+cu117入れたりしてたけどdocker内でCUDAはまだ使えてない

Sald raSald ra

ちなみに上だけだと駄目で、下記をdockerDesktopに入れてあげないとpullできない

  "insecure-registries":[
    "nvcr.io"
   ],
Sald raSald ra

色々やったが、docker内でpoetryを使うメリットがそこまでないためrequires.txtでの管理にしようかと考えている

Sald raSald ra

とりあえずこれで動いた。

ARG python_image_v="nvidia/cuda:11.7.0-base-ubuntu22.04"
# python3.9のイメージをダウンロード
FROM ${python_image_v}
ENV TZ=Asia/Tokyo
RUN ln -snf /usr/share/zoneinfo/$TZ /etc/localtime && echo $TZ > /etc/timezone
RUN apt update && \
    apt install -y software-properties-common && \
    add-apt-repository ppa:deadsnakes/ppa
RUN apt install -y \
    python3.9 \
    python3-pip \
    sudo \
    wget \
    git \
    vim \
    curl \
    python3.9-distutils

# python3.9をpythonコマンドとして使えるようにする
RUN mv /usr/bin/python3 /usr/bin/python3_old && \
    mv /usr/bin/python3.9 /usr/bin/python3

RUN  pip install transformers fastapi uvicorn sentencepiece &&\
     pip install torch --extra-index-url https://download.pytorch.org/whl/cu117

ARG work_dir="/src/"
# コンテナにアクセスした際のデフォルトディレクトリ
WORKDIR ${work_dir}
Sald raSald ra

最終的にはこうなった

ARG python_image_v="nvidia/cuda:11.7.0-base-ubuntu22.04"
# python3.9のイメージをダウンロード
FROM ${python_image_v}
ENV TZ=Asia/Tokyo
RUN ln -snf /usr/share/zoneinfo/$TZ /etc/localtime && echo $TZ > /etc/timezone
RUN apt update && \
    apt install -y software-properties-common && \
    add-apt-repository ppa:deadsnakes/ppa
RUN apt install -y \
    python3.9 \
    python3-pip \
    sudo \
    wget \
    git \
    vim \
    curl \
    python3.9-distutils

# python3.9をpythonコマンドとして使えるようにする
RUN mv /usr/bin/python3 /usr/bin/python3_old && \
    mv /usr/bin/python3.9 /usr/bin/python3

RUN  pip install transformers fastapi uvicorn sentencepiece &&\
     pip install torch --extra-index-url https://download.pytorch.org/whl/cu117

EXPOSE 8000

ARG work_dir="/src/"
# コンテナにアクセスした際のデフォルトディレクトリ
WORKDIR ${work_dir}

CMD ["uvicorn", "main:app", "--reload", "--host", "0.0.0.0", "--port", "8000"]
Sald raSald ra

docker-compose

version: '3'
services:
  local-llm:
    build: .
    deploy:
      resources:
        reservations:
          devices:
            - capabilities: [gpu]
    volumes:
      - .:/src
    ports:
     - 8000:8000
    tty: true # retain container up
このスクラップは2023/02/23にクローズされました