AI 物見遊山 - 環境構築編 - 基礎環境

環境構築編 - 基礎環境

アイキャッチ画像

AI 物見遊山をするための基礎的な環境を構築する。 この環境では、AI 系のパッケージを導入していない。 今後、自然言語処理用環境のように環境構築を追加で行う前提とする。

利用する環境

できれば、CUDA 対応の GPU がある方が楽しいが、CPU でも問題無い。 メモリ 16 GB では心許ない気がする。 ストレージは、数十ギガ程度、あっという間に使用する。 AI で利用するモデルのサイズは、数ギガバイトが普通であり、 実行の度に読み込むので、できるだけ高速なストレージがよい。

  • Windows 11 Pro 24H2
    • CPU: AMD Ryzen 9 7900X 12-Core
    • Memory: 64 GB
    • Storage: M.2 SSD 1 TB
  • WSL V2.2.4.0
  • Ubuntu 24.04

利用するパッケージ等

  • Miniconda3
    • Python のパッケージ管理システムと基本的なパッケージ群
  • Python 3.12
  • IntelliJ の設定
  • TensorBoard
    • 機械学習モデルのトレーニングプロセスを可視化するツール
  • JupyterLab
    • Web ベースのインタラクティブな開発環境
  • PulseAudio
    • 音声再生用ツール
  • pydub
    • 音声ファイルを簡単に操作できるライブラリ
  • Pandoc
    • ドキュメントを別の形式に変換するツール
  • プロファイラ系
    • プログラムの性能を調査できるライブラリ

構築手順

WSL および Ubuntu をインストールする。

以下を参考にインストールする。

Ubuntu 環境は、デフォルトのディストリビューションを利用してもよいが、 デフォルトをコピーして新しく作成することが望ましい。 手順は、以下を参考にする。

大まかな手順

# ディストリビューションをエクスポートする。
wsl --export Ubuntu-24.04 Ubuntu-24.04.tar

# ディストリビューションをインポートする。
wsl --import Ubuntu-24.04-pytorch Ubuntu-24.04-pytorch Ubuntu-24.04.tar

# WSL にログインする(root ユーザ)。
wsl --distribution Ubuntu-24.04-pytorch

# デフォルトユーザを変更する。
cat << EOF > /etc/wsl.conf
[user]
default=ubuntu
#[interop]
#appendWindowsPath = false
EOF

# systemd を有効化する。
JupyterLab を自動起動させるために利用する。
/etc/wsl.conf ファイルの先頭行に以下を追記する。
[boot]
systemd=true

# 設定を反映するため停止する。
exit
wsl --terminate Ubuntu-24.04-pytorch

# WSL にログインする(Ubuntu ユーザ)。
wsl --distribution Ubuntu-24.04-pytorch

# パッケージを更新する。
sudo apt update
sudo apt -y upgrade

Miniconda3 をインストールする。

Ubuntu ユーザで、Ubuntu-24.04-pytorch にログインしておく。

cd
# Miniconda3 のインストーラをダウンロードする。
wget https://repo.anaconda.com/miniconda/Miniconda3-latest-Linux-x86_64.sh

# インストーラを実行する。
bash Miniconda3-latest-Linux-x86_64.sh

以下のように選択肢が表示されるので、回答する。

Please, press ENTER to continue
>>> Enter
Do you accept the license terms? [yes|no]
>>> yes
Miniconda3 will now be installed into this location:
/home/ubuntu/miniconda3

  - Press ENTER to confirm the location
  - Press CTRL-C to abort the installation
  - Or specify a different location below

[/home/ubuntu/miniconda3] >>> Enter

Do you wish to update your shell profile to automatically initialize conda?
This will activate conda on startup and change the command prompt when activated.
If you'd prefer that conda's base environment not be activated on startup,
   run the following command when conda is activated:

conda config --set auto_activate_base false

You can undo this by running `conda init --reverse $SHELL`? [yes|no]
[no] >>> yes

Miniconda3 が /home/ubuntu/miniconda3 にインストールされる。 最後の質問で、yes にすると、~/.bashrc に Miniconda の 初期設定処理が追加される。 ただし、.bashrc は、シェルがインタラクティブでない場合、 実行されない。

Miniconda の base 環境が自動的に有効化されないように設定する。

conda config --set auto_activate_base false

Ubuntu-24.04-pytorch にログインし直す。

Python 環境を作成する。

cd

conda create --name ai -y python=3.12
conda activate ai

# パッケージを最新化する
python -m pip install -U pip setuptools wheel

# ai 環境をデフォルトで有効化する
cat << 'EOF' >> ~/.bashrc

conda activate ai
EOF

Ubuntu-24.04-pytorch にログインし直す

IntelliJ の設定をする。

IntelliJ からこの Python 環境を、利用する場合の設定を記述する。

  • 設定したいプロジェクトを開く。
  • File | Project Structure (Shift + Ctrl + Alt + S) を選択する。
  • Platform Settings | SDKs を選択する。
  • + | Add Python SDK from disk... を選択する。
  • WSL を選択、以下の項目を設定し、OK ボタンを押下する。
    • Linux distribution: Ubuntu-24.04-pytorch
    • Python interpreter path: /home/ubuntu/miniconda3/envs/ai/bin/python3.12
  • 作成した SDK の設定を変更する。
    • Name: Python 3.12(ai)@Ubuntu-24.04-pytorch
  • Project Settings | Project を選択し、以下の項目を設定する。
    • SDK: Python 3.12(ai)@Ubuntu-24.04-pytorch
  • Project Settings | Modules | Dependencies タブを選択して、以下の項目を設定する。
    • Module SDK: Python 3.12(ai)@Ubuntu-24.04-pytorch
  • OK ボタンを押下して、設定を完了する。

しばらくパッケージの検索処理が実行されるので、完了するまで待つ。 完了後、Python ソースを実行すると、作成した Python 環境上で動作する。

IntelliJ から実行する場合、インタラクティブシェルでは無いため、 .bashrc の先頭で直ぐに実行を中止するので、Miniconda 関連の設定が行われない。 conda activate ai も実行していないため、 場合によっては問題が発生するかもしれない。

TensorBoard をインストールする。

pip install tensorboard

JupyterLab をインストールする。

pip install jupyterlab

拡張機能用に Node.js をインストールする。 apt パッケージのバージョンは、v18 なので、conda で v22 インストールする conda でインストールすると、conda の ai 環境内でのみ利用可能

conda install -c conda-forge nodejs

コード補完機能プラグインをインストール

pip install jupyterlab-lsp
pip install 'python-lsp-server[all]'

コードフォーマッタプラグインをインストール

pip install jupyterlab-code-formatter
pip install black isort

追加でパッケージをインストール

pip install matplotlib kaleido pillow plotly ipywidgets

JupyterLab を systemd に登録する。 トークン無しでアクセスできる設定なので、注意。

cat << EOL | sudo tee /etc/systemd/system/jupyter.service > /dev/null
[Unit]
Description=Jupyter Lab

[Service]
Type=simple
Restart=always
RestartSec=10
User=ubuntu
Group=ubuntu
WorkingDirectory=/home/ubuntu
Environment=PATH=/home/ubuntu/miniconda3/condabin:/home/ubuntu/miniconda3/envs/ai/bin
ExecStart=/home/ubuntu/miniconda3/envs/ai/bin/jupyter lab --no-browser --port=18888 --IdentityProvider.token=''

[Install]
WantedBy=multi-user.target
EOL

systemd に設定を反映する。

sudo systemctl daemon-reload

Jupyter サービスを起動する。

sudo systemctl start jupyter.service

状態を確認する。

systemctl status jupyter.service

自動起動を有効化する。

sudo systemctl enable jupyter.service

JupyterLab にアクセスするには、 ブラウザで、以下の URL にアクセスする。

http://localhost:18888/lab

PulseAudio ユーティリティをインストールする。

WSL 上からサウンドを再生するためのパッケージをインストールする。 PulseAudio のプレイヤーコマンド(paplay, parec)などをインストール

sudo apt install pulseaudio-utils

pydub パッケージをインストールする。

WSL 上の Python のプログラムから、直接音声を再生することが可能なライブラリ。

sudo apt install ffmpeg libavcodec-extra
pip install pydub

動作確認

サンプル音声を作成する。

ffmpeg -f lavfi -i "sine=frequency=440:beep_factor=0.5:sample_rate=44100" -f lavfi -i "sine=frequency=880:beep_factor=1.2:sample_rate=44100" -filter_complex amerge=inputs=2 -t 3 output.wav

PulseAudio ユーティリティで再生する。

paplay output.wav

pydub で再生する。

cat <<'EOL' | python
from pydub import AudioSegment
from pydub.playback import play
sound = AudioSegment.from_file("output.wav", format="wav")
play(sound)
EOL

当環境では、pydub や、ffplay で wav を再生すると、 ノイズが発生してしまう。

Pandoc をインストールする。

panflute は、Pandoc フィルタ用プログラムを作成する時に利用する。

wget https://github.com/jgm/pandoc/releases/download/3.6.2/pandoc-3.6.2-1-amd64.deb
sudo dpkg -i pandoc-3.6.2-1-amd64.deb
pip install panflute

プロファイラ系をインストールする。

line_profiler は、ソース行ごとに CPU 使用率などを調査できる。 memory_profiler は、メモリ使用量などを調査できる。 scalene は、CPU、GPU、メモリなどまとめて調査できる。

各プロファイラは、コマンドラインでも、Jupyter Lab 上でも利用できる。 利用方法の詳細は、各サイトを参照。

pip install line_profiler memory_profiler scalene

scalene を Jupyter 上で利用する方法を記載する。 以下は、セル単位でプロファイルをする方法となる。

最初のセルで、scalene をロードする。

%load_ext scalene

計測したいセルの先頭に以下を記載して、セルを実行する。 Jupyter 上では、一部の項目しか表示されない。

%%scalene