[PIST6(競輪)を機械学習で儲かるか検証した話] Section 00-01 : 開発コンテナ

ディレクトリ構成

VS CodeのDev Containerを使って開発しています。
Dockerが動く人は参考にしてください。Docker環境でない、pure-pythonの方は、Dockerfileに記載してある、ライブラリ等をインストールしてください。

この本で書かれるプロジェクトのディレクトリは以下のようになっています

project
├── .devcontainer
|    ├── Dockerfile
|    ├── devcontainer.json
|    └── docker-compose.yml
├── source_data
├── learning_data
├── models
├── notebooks
└── "programs"
  • .devcontainer
    • VS CodeのDev Containerプラグインで認識するディレクトリ
  • source_data
    • Webページから取ってきた生データを入れておくディレクトリ
  • learning_data
    • 生データから整形したデータを置く場所
  • models
    • モデルなどを保存する場所
  • notebooks
    • jupyter notebook形式のファイルを置く場所。基本的な分析はnotebook形式で行います
  • “programs”
    • 基本的には、ここにプログラムを置いていく

以下では環境構築に必要な.devcontainerの中身について記載します。
ベースはpytorch:22.04。

.devcontainer

Dockerfile

Dockerfile

ベースはpytorch:22.04です。

FROM nvcr.io/nvidia/pytorch:22.04-py3

ARG USERNAME=vscode
ARG USER_UID=1000
ARG USER_GID=$USER_UID

ENV LANG ja_JP.UTF-8
ENV LANGUAGE ja_JP:ja
ENV LC_ALL ja_JP.UTF-8
ENV TZ JST-9
ENV TERM xterm

RUN apt-get update \
&& groupadd --gid $USER_GID $USERNAME \
&& useradd -s /bin/bash --uid $USER_UID --gid $USER_GID -m $USERNAME \
&& apt-get install -y sudo \
&& echo $USERNAME ALL=(root) NOPASSWD:ALL > /etc/sudoers.d/$USERNAME \
&& chmod 0440 /etc/sudoers.d/$USERNAME \
&& apt-get -y install locales \
&& localedef -f UTF-8 -i ja_JP ja_JP.UTF-8

RUN apt-get -y install git

RUN pip install --upgrade pip
RUN pip install --upgrade setuptools

RUN python -m pip install requests
RUN python -m pip install numpy
RUN python -m pip install pandas
RUN python -m pip install matplotlib
RUN python -m pip install bs4
RUN python -m pip install scikit-learn
RUN python -m pip install optuna
RUN python -m pip install lightgbm
RUN python -m pip install tqdm

RUN python -m pip install timeout-decorator
RUN python -m pip install requests-html

RUN python -m pip install seaborn
RUN python -m pip install pyarrow
RUN python -m pip install numba
RUN python -m pip install selenium
RUN python -m pip install schedule
RUN python -m pip install imbalanced-learn

devcontainer.json

devcontainer.json。各自、自分が使うVS Codeのプラグイン名を"extensions":で追記してください。

{
    "name": "pist6_predict_project",
    "service": "pist6_predict",
    "dockerComposeFile": "docker-compose.yml",
    "remoteUser": "vscode",
    "workspaceFolder": "/work",
    "customizations": {
      "vscode": {
        "extensions": [
          "ms-python.python",
          "ms-toolsai.jupyter"
        ]
      }
    }
}

docker-compose.yml

ポート番号やサービス名、コンテナ名が他のプロジェクトと重複しないように注意してください。

version: '3'
services:
  pist6_predict:
    container_name: 'pist6_predict_container'
    hostname: 'pist6_predict_container'
    build: .
    restart: always
    working_dir: '/work' 
    tty: true
    volumes:
      - type: bind
        source: ..
        target: /work
    ports:
      - 8888:8888
    ulimits:
        memlock: -1
        stack: -1
    deploy:
        resources:
          reservations:
              devices:
                - capabilities: [gpu]
  chrome:
    image: seleniarm/standalone-chromium
    shm_size: 2gb
    ports:
      - "4444:4444"
      - "7900:7900"

あとは、VS CodeのDev Containerプラグインを入れて、コンテナーで再度開くを押せば、自動でコンテナ内で開発できます。

ちなみに筆者の計算機は

  • CPU : i7-5950X
  • Memory : 32GB
  • GPU : GTX-1080Ti

という骨董AI計算機です。最近の計算機ならこの記事の環境は動くと思います。またGoogle Colaboratoryの無料枠でも問題ない程度の計算量だと思います。

タイトルとURLをコピーしました