Windowsで人工知能を開発するためのGPU仮想環境を最速で構築する。

おはこんばんにちは。普段はnoteに生息しているので勝手がわからず困惑しています。
ファイル関係のインストールやダウンロードの待機時間で書いている炬燵記事なので、わかりやすさよりも備忘として残す意味合いを強めに最速で走ります。というか意外と調べても依存関係全部カバーしている記事がなくて苦戦を強いられたので一応書き残します。rapids?あれはカスです。てかコマンド全部忘れた。大体ディスコだっけ。普通にカスなのでマークダウンを覚えていない。

待機時間の暇つぶし用におすすめのネット小説を置いておきます。無職転生並みにアニメ化してほしかった。一番好きなキャラはエル・シドです。とてもエルの民とは思えないところがいい。

https://kakuyomu.jp/works/1177354054886943247

本題に移ります。以下のコードは基本的に作成した環境上でのコマンド入力を前提としています。決してｐｈｐ２回も打つとかめんどくｓとか思ったわけじゃないです。

#環境（2024年8月16日時点　ちょっと怪しいので確認中　2024年8月18日再現性確認）
コマンド違った
・Windows11　ブンツ22.04？　WSL2　Python3.11　Anaconda3(minicondaでも可)
（この辺の環境構築はネットに充実しているので省きます。ggrksという意味の京言葉ではありません。関西ではあるけど。）
・えぬびでぃあドライバ　525.60.13以上
・CUDA　12.4
・cuDNN 8.9.7
・Tenserflow 2.17.0（TensorRTとの互換性はないので注意。正確性を優先します）
・pytoach 12.4を選択
・cuMLとcuDF

以下コマンドやリンク
ダウンロードしたものに関してはブンツのユーザーディレクトリにおいておけばいけます。できなかったらダウンロードディレクトリを左クリック→パスをコピーしてchatGPTに管理者権限でコマンド作って！っていうとできます。すごい時代だ。
確認は全部ｙです。信用できない場合は公式ドキュメントを読んで頭を痛めてください。

・ブンツ
コマンドプロンプトを管理者権限で開き以下のコマンドを打つ
```
sudo apt install wsl
wsl --install
```

これでブンツが使えるようになりました。適当にユザネとパスは設定してメモしといてください。めっちゃ使うので。古いパソコンの場合は知りません。課金してください。

・Anaconda3
事前準備です
作業用ディレクトリを作ります。基本的にここですべての作業を行います.


```
cd /home/ウブンツのユザネ/tmp
```

```
sudo apt update
```

エラーが出たらこうします

```
sudo apt update
sudo apt upgrade
```
いったんここでバックアップを取ります

```
sudo mv /usr/lib/wsl/lib/libcuda.so.1 /usr/lib/wsl/lib/libcuda.so.1.backup
```
取れたか確認をします。

```
 ls /usr/lib/wsl/lib/libcuda.so.*
```
backupという文字列が見えたら成功です。前半部分をコピペしてこうします。

```
sudo ln -s /usr/lib/wsl/lib/libcuda.so.1 /usr/lib/wsl/lib/libcuda.so.1
sudo ldconfig
```
次行きます。curlをインストールします。意味はググってください。

```
sudo apt install curl -y
```

以下のPython 3.12

64-Bit (x86) Installer (1007.9M)

からファイルをダウンロードします。


https://www.anaconda.com/download/success

```
cp /mnt/c/Users/ウインドウズのユーザーファイルディレクトリ名/Downloads/Anaconda3-2024.06-1-Linux-x86_64.sh /home/ブンツのユザネ/tmp
```
ここで以下のコマンドを実行します。

```
sudo bash Anaconda3-2024.06-1-Linux-x86_64.sh -b -p /anaconda
PREFIX=/anaconda
```

環境をリフレッシュします。

```
export PATH=/anaconda/bin:$PATH
source ~/.bashrc
```

確認コマンドです。

```
/anaconda/bin/python --version
/anaconda/bin/conda --version
```
ここでPythonのバージョンが3.12と表示されますがひとまず無視します。
いったんここまでで現環境を保存します。（あんま使わない）
```
touch ~/.condarc
conda config --show > ~/.condarc
```

確認コマンドです
```
cat ~/.condarc
conda env list
```
ここでbaseがデフォルトで作成されていると思うので、condaコマンドを有効化して起動します。

```
conda init 
source ~/.bashrc
```
(base)となったら成功です。バックアップを取っておきます。
```
sudo mv /usr/lib/wsl/lib/libcuda.so.1 /usr/lib/wsl/lib/libcuda.so.1.backup
```

手動でWSL2をシャットダウンし環境を保存します。
ここでWindowsコマンドプロンプトを開きます。
```
wsl --shutdown
```
もう一度WSL2を開きます。デフォルトで（base）が起動するようになっていると思います。ここでAnacondaは終了です。

次に仮想環境の構築を行います。nameはrapidasu で行います。北海道のアレです。
tmpディレクトリに移動します。よく忘れます。
```
cd /home/ブンツのユザネ/tmp
```
めんどくせーエラーを事前に防ぐために魔法を使います。

```
conda config --remove-key default_threads
conda config --remove-key repodata_threads
```
rapidasuという名前の仮想環境を構築します。
```
conda create -n rapidasu python=3.11
```
(bese)と出たら成功です。次にアクティベートして確認します。

```
conda activate rapidasu
```
確認コマンド
```
python --version
```
Python 3.11.9と出たらOKです。
ここまでで再びバックアップを取っておきます。
```
sudo mv /usr/lib/wsl/lib/libcuda.so.1 /usr/lib/wsl/lib/libcuda.so.1.backup
```

・CUDA　12.1
リンクを開いていい感じに選びます。
CUDA Toolkit 12.1.0 (March 2024), Versioned Online Documentationです。

https://developer.nvidia.com/cuda-toolkit-archive

```
wget https://developer.download.nvidia.com/compute/cuda/repos/wsl-ubuntu/x86_64/cuda-wsl-ubuntu.pin
sudo mv cuda-wsl-ubuntu.pin /etc/apt/preferences.d/cuda-repository-pin-600
wget https://developer.download.nvidia.com/compute/cuda/12.1.0/local_installers/cuda-repo-wsl-ubuntu-12-1-local_12.1.0-1_amd64.deb
sudo dpkg -i cuda-repo-wsl-ubuntu-12-1-local_12.1.0-1_amd64.deb
sudo cp /var/cuda-repo-wsl-ubuntu-12-1-local/cuda-*-keyring.gpg /usr/share/keyrings/
sudo apt-get update
sudo apt-get -y install cuda
echo 'export PATH=/usr/local/cuda-12.1/bin:$PATH' >> ~/.bashrc
echo 'export LD_LIBRARY_PATH=/usr/local/cuda-12.1/lib64:$LD_LIBRARY_PATH' >> ~/.bashrc
source ~/.bashrc
nvcc --version
```
これはさすがに覚えてた。versionで12.1が出たら成功です。ハイ次

・cuDNN 8.9.7
対応するパッケージをダウンロード

https://developer.nvidia.com/rdp/cudnn-archive

間違えてディスコのリンクを貼っちゃって一瞬焦りました（ディスコを無限ストレージだと思っている）。
```
# cuDNNのローカルリポジトリをインストール
sudo dpkg -i cudnn-local-repo-ubuntu2204-8.9.7.29_1.0-1_amd64.deb

# GPGキーをコピー
sudo cp /var/cudnn-local-repo-ubuntu2204-8.9.7.29/cudnn-local-<key>-keyring.gpg /usr/share/keyrings/

# APTのリポジトリを更新
sudo apt-get update

sudo apt-get install -f

# cuDNN関連のパッケージをインストール
sudo apt-get install libcudnn8 libcudnn8-dev libcudnn8-samples

echo 'export LD_LIBRARY_PATH=/usr/local/cuda/lib64:$LD_LIBRARY_PATH' >> ~/.bashrc
source ~/.bashrc
dpkg -L libcudnn8
```

見つかったディレクトリを参考に手動でコマンドを打ち込む(以下コピペでもできるかもしれない)

```
sudo ln -sf /usr/lib/x86_64-linux-gnu/libcudnn.so.8.9.7 /usr/local/cuda/lib64/libcudnn.so.8
sudo ln -sf /usr/lib/x86_64-linux-gnu/libcudnn_adv_infer.so.8.9.7 /usr/local/cuda/lib64/libcudnn_adv_infer.so.8
sudo ln -sf /usr/lib/x86_64-linux-gnu/libcudnn_adv_train.so.8.9.7 /usr/local/cuda/lib64/libcudnn_adv_train.so.8
sudo ln -sf /usr/lib/x86_64-linux-gnu/libcudnn_cnn_infer.so.8.9.7 /usr/local/cuda/lib64/libcudnn_cnn_infer.so.8
sudo ln -sf /usr/lib/x86_64-linux-gnu/libcudnn_cnn_train.so.8.9.7 /usr/local/cuda/lib64/libcudnn_cnn_train.so.8
sudo ln -sf /usr/lib/x86_64-linux-gnu/libcudnn_ops_infer.so.8.9.7 /usr/local/cuda/lib64/libcudnn_ops_infer.so.8
sudo ln -sf /usr/lib/x86_64-linux-gnu/libcudnn_ops_train.so.8.9.7 /usr/local/cuda/lib64/libcudnn_ops_train.so.8
sudo ln -sf /usr/include/cudnn_version.h /usr/local/cuda/include/cudnn_version.h
sudo ln -sf /usr/include/cudnn.h /usr/local/cuda/include/cudnn.h
sudo ln -sf /usr/include/cudnn_backend.h /usr/local/cuda/include/cudnn_backend.h
sudo ln -sf /usr/include/cudnn_adv_infer.h /usr/local/cuda/include/cudnn_adv_infer.h
sudo ln -sf /usr/include/cudnn_adv_train.h /usr/local/cuda/include/cudnn_adv_train.h
sudo ln -sf /usr/include/cudnn_cnn_infer.h /usr/local/cuda/include/cudnn_cnn_infer.h
sudo ln -sf /usr/include/cudnn_cnn_train.h /usr/local/cuda/include/cudnn_cnn_train.h
sudo ln -sf /usr/include/cudnn_ops_infer.h /usr/local/cuda/include/cudnn_ops_infer.h
sudo ln -sf /usr/include/cudnn_ops_train.h /usr/local/cuda/include/cudnn_ops_train.h
```

確認コマンド

```
ls -l /usr/local/cuda/include/cudnn*
```

・Tenserflow 2.17.0
```
pip install tensorflow
```



これでエラーが出る場合はホイールファイルを使いますが、pipが壊れている可能性が高いので、再構築をお勧めします
（蛇足）
これで直った（一度寝ぼけて破壊した）
wget https://bootstrap.pypa.io/get-pip.py
/home/bakawan/.conda/envs/rapidasu/bin/python get-pip.py
戻ります。
ホイールファイルを使います。
以下サイトでCtrl+Fで「Python 3.11 GPU」と打って横のリンクのやつをダウンロードします。

https://www.tensorflow.org/install/pip?hl=ja

実行コマンド

```
pip install tensorflow-2.17.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl 
```


よっぽど大丈夫だと思いますが一応の確認コマンド
```
python -c "import tensorflow as tf; print('Num GPUs Available: ', len(tf.config.list_physical_devices('GPU')))"
```

Num GPUs Available:  1（以上）
と出たら認識しています。警告はガン無視でOKです。


・pytoach（12.1）
やべー書いていたら追いついてしまった。どうしよ。まあいいや。続けます。
以下サイト。linuxでもWindowsでもコマンド変わんなかったのでなんでもいいと思います。一応コマンドも載せておきます。

https://pytorch.org/


```
conda install pytorch torchvision torchaudio pytorch-cuda=12.1 -c pytorch -c nvidia
```

確認コマンドです。
```
python3 -c "import torch; print(torch.__version__)"
```
2.4.0とでたらおけ。
・cuMLとcuDF
conda search cudf --channel rapidsai
conda search cuml --channel rapidsai
これらのコマンドをrapidsaiの部分をconda-forge、nvidiaに変えるとエラーが出ます。
致し方なし。PyPI ミラーを使います。cupyを更新してから入れます。
```
pip uninstall cupy
pip install cupy-cuda12x
pip install --extra-index-url https://pypi.nvidia.com cudf-cu12 cuml-cu12
```

一応確認コマンド

```
conda list | grep -E 'cudf|cuml'
```

これでひとまず仮想環境の構築は終わりです。お疲れ様です。仮想環境の保存はこのようにします。

```
conda env export -n rapidasu > rapidasu_environment.yml
```

ここでは「rapidasu」という名前で仮想環境を保存しました。
因みに呼び出すときはこうです。

```
conda env create -f rapidasu_environment.yml
```

これで作成した環境を友達とかに渡すことができます。因みに中身はこんな感じです。余計なものもいろいろ入っています（後日追加したので）
```
name: rapidasu
channels:
  - rapidsai
  - defaults
  - conda-forge
dependencies:
  - _libgcc_mutex=0.1=conda_forge
  - _openmp_mutex=4.5=2_gnu
  - absl-py=2.1.0=pyhd8ed1ab_0
  - astunparse=1.6.3=pyhd8ed1ab_0
  - aws-c-auth=0.7.25=hdfe1943_2
  - aws-c-cal=0.7.2=h87b94db_0
  - aws-c-common=0.9.23=h4ab18f5_0
  - aws-c-compression=0.2.18=he027950_7
  - aws-c-event-stream=0.4.2=h29f85be_19
  - aws-c-http=0.8.7=h45b8271_1
  - aws-c-io=0.14.18=h6ea103f_1
  - aws-c-mqtt=0.10.4=h7eb77b2_15
  - aws-c-s3=0.6.4=hd923058_5
  - aws-c-sdkutils=0.1.16=he027950_3
  - aws-checksums=0.1.18=he027950_7
  - aws-crt-cpp=0.27.5=hdd22b19_3
  - aws-sdk-cpp=1.11.379=h82708ae_1
  - azure-core-cpp=1.13.0=h935415a_0
  - azure-identity-cpp=1.8.0=hd126650_2
  - azure-storage-blobs-cpp=12.12.0=hd2e3451_0
  - azure-storage-common-cpp=12.7.0=h10ac4d7_1
  - azure-storage-files-datalake-cpp=12.11.0=h325d260_1
  - bokeh=3.5.1=pyhd8ed1ab_0
  - brotli-python=1.1.0=py311hb755f60_1
  - bzip2=1.0.8=h4bc722e_7
  - c-ares=1.32.3=h4bc722e_0
  - ca-certificates=2024.7.2=h06a4308_0
  - cached-property=1.5.2=hd8ed1ab_1
  - cached_property=1.5.2=pyha770c72_1
  - cachetools=5.4.0=pyhd8ed1ab_0
  - certifi=2024.7.4=py311h06a4308_0
  - cffi=1.17.0=py311ha8e6434_0
  - charset-normalizer=3.3.2=pyhd8ed1ab_0
  - click=8.1.7=unix_pyh707e725_0
  - cloudpickle=3.0.0=pyhd8ed1ab_0
  - contourpy=1.2.1=py311h9547e67_0
  - cuda-cccl_linux-64=12.5.39=ha770c72_0
  - cuda-crt-dev_linux-64=12.5.82=ha770c72_0
  - cuda-crt-tools=12.5.82=ha770c72_0
  - cuda-cudart=12.5.82=he02047a_0
  - cuda-cudart-dev=12.5.82=he02047a_0
  - cuda-cudart-dev_linux-64=12.5.82=h85509e4_0
  - cuda-cudart-static=12.5.82=he02047a_0
  - cuda-cudart-static_linux-64=12.5.82=h85509e4_0
  - cuda-cudart_linux-64=12.5.82=h85509e4_0
  - cuda-nvcc-dev_linux-64=12.5.82=ha770c72_0
  - cuda-nvcc-impl=12.5.82=hd3aeb46_0
  - cuda-nvcc-tools=12.5.82=hd3aeb46_0
  - cuda-nvrtc=12.5.82=he02047a_0
  - cuda-nvtx=12.5.82=he02047a_0
  - cuda-nvvm-dev_linux-64=12.5.82=ha770c72_0
  - cuda-nvvm-impl=12.5.82=h59595ed_0
  - cuda-nvvm-tools=12.5.82=h59595ed_0
  - cuda-profiler-api=12.5.39=ha770c72_0
  - cuda-python=12.6.0=py311h817de4b_0
  - cuda-version=12.5=hd4f0392_3
  - cudf=24.08.01=cuda12_py311_240807_gc5ae8200e7_0
  - cudnn=8.9.7.29=h092f7fd_3
  - cuml=24.08.00=cuda12_py311_240808_gb17f2dbbe_0
  - cupy=13.2.0=py311he5a987b_1
  - cupy-core=13.2.0=py311h3bdf873_1
  - cytoolz=0.12.3=py311h459d7ec_0
  - dask=2024.7.1=pyhd8ed1ab_0
  - dask-core=2024.7.1=pyhd8ed1ab_0
  - dask-cuda=24.08.02=py311_240807_gdda3243_0
  - dask-cudf=24.08.01=cuda12_py311_240807_gc5ae8200e7_0
  - dask-expr=1.1.9=pyhd8ed1ab_0
  - distributed=2024.7.1=pyhd8ed1ab_0
  - distributed-ucxx=0.39.01=py3.11_240807_g19a66b4_0
  - dlpack=0.8=h59595ed_3
  - fastrlock=0.8.2=py311hb755f60_2
  - flatbuffers=24.3.25=h59595ed_0
  - fmt=10.2.1=h00ab1b0_0
  - freetype=2.12.1=h267a509_2
  - fsspec=2024.6.1=pyhff2d567_0
  - gast=0.5.5=pyhd8ed1ab_0
  - gflags=2.2.2=he1b5a44_1004
  - giflib=5.2.2=hd590300_0
  - glog=0.7.1=hbabe93e_0
  - google-pasta=0.2.0=pyhd8ed1ab_1
  - grpcio=1.62.2=py311ha6695c7_0
  - h2=4.1.0=pyhd8ed1ab_0
  - h5py=3.11.0=nompi_py311h439e445_102
  - hdf5=1.14.3=nompi_hdf9ad27_105
  - hpack=4.0.0=pyh9f0ad1d_0
  - hyperframe=6.0.1=pyhd8ed1ab_0
  - icu=75.1=he02047a_0
  - idna=3.7=pyhd8ed1ab_0
  - importlib-metadata=8.2.0=pyha770c72_0
  - importlib_metadata=8.2.0=hd8ed1ab_0
  - jinja2=3.1.4=pyhd8ed1ab_0
  - joblib=1.4.2=pyhd8ed1ab_0
  - keyutils=1.6.1=h166bdaf_0
  - krb5=1.21.3=h659f571_0
  - lcms2=2.16=hb7c19ff_0
  - ld_impl_linux-64=2.40=hf3520f5_7
  - lerc=4.0.0=h27087fc_0
  - libabseil=20240116.2=cxx17_he02047a_1
  - libaec=1.1.3=h59595ed_0
  - libarrow=16.1.0=h1aed627_18_cpu
  - libarrow-acero=16.1.0=he02047a_18_cpu
  - libarrow-dataset=16.1.0=he02047a_18_cpu
  - libarrow-substrait=16.1.0=hc9a23c6_18_cpu
  - libblas=3.9.0=23_linux64_openblas
  - libbrotlicommon=1.1.0=hd590300_1
  - libbrotlidec=1.1.0=hd590300_1
  - libbrotlienc=1.1.0=hd590300_1
  - libcblas=3.9.0=23_linux64_openblas
  - libcrc32c=1.1.2=h9c3ff4c_0
  - libcublas=12.5.3.2=he02047a_0
  - libcublas-dev=12.5.3.2=he02047a_0
  - libcudf=24.08.01=cuda12_240807_gc5ae8200e7_0
  - libcufft=11.2.3.61=he02047a_0
  - libcufile=1.10.1.7=he02047a_0
  - libcufile-dev=1.10.1.7=he02047a_0
  - libcuml=24.08.00=cuda12_240808_gb17f2dbbe_0
  - libcumlprims=24.08.00=cuda12_240808_g172c6cb_0
  - libcurand=10.3.6.82=he02047a_0
  - libcurand-dev=10.3.6.82=he02047a_0
  - libcurl=8.9.1=hdb1bdb2_0
  - libcusolver=11.6.3.83=he02047a_0
  - libcusolver-dev=11.6.3.83=he02047a_0
  - libcusparse=12.5.1.3=he02047a_0
  - libcusparse-dev=12.5.1.3=he02047a_0
  - libdeflate=1.21=h4bc722e_0
  - libedit=3.1.20191231=he28a2e2_2
  - libev=4.33=hd590300_2
  - libevent=2.1.12=hf998b51_1
  - libexpat=2.6.2=h59595ed_0
  - libffi=3.4.2=h7f98852_5
  - libgcc-ng=14.1.0=h77fa898_0
  - libgfortran-ng=14.1.0=h69a702a_0
  - libgfortran5=14.1.0=hc5f4f2c_0
  - libgomp=14.1.0=h77fa898_0
  - libgoogle-cloud=2.26.0=h26d7fe4_0
  - libgoogle-cloud-storage=2.26.0=ha262f82_0
  - libgrpc=1.62.2=h15f2491_0
  - libiconv=1.17=hd590300_2
  - libjpeg-turbo=3.0.0=hd590300_1
  - libkvikio=24.08.02=cuda12_240807_g6b80a5c_0
  - liblapack=3.9.0=23_linux64_openblas
  - libllvm14=14.0.6=hcd5def8_4
  - libnghttp2=1.58.0=h47da74e_1
  - libnl=3.10.0=h4bc722e_0
  - libnsl=2.0.1=hd590300_0
  - libnvjitlink=12.5.82=he02047a_0
  - libopenblas=0.3.27=pthreads_hac2b453_1
  - libparquet=16.1.0=h9e5060d_18_cpu
  - libpng=1.6.43=h2797004_0
  - libprotobuf=4.25.3=h08a7969_0
  - libraft=24.08.01=cuda12_240807_g185da16b_0
  - libraft-headers=24.08.01=cuda12_240807_g185da16b_0
  - libraft-headers-only=24.08.01=cuda12_240807_g185da16b_0
  - libre2-11=2023.09.01=h5a48ba9_2
  - librmm=24.08.02=cuda12_240807_g5aa8ebe6_0
  - libsqlite=3.46.0=hde9e2c9_0
  - libssh2=1.11.0=h0841786_0
  - libstdcxx-ng=14.1.0=hc0a3c3a_0
  - libta-lib=0.4.0=hd590300_2
  - libthrift=0.19.0=hb90f79a_1
  - libtiff=4.6.0=h46a8edc_4
  - libucxx=0.39.01=cuda12_240807_g19a66b4_0
  - libutf8proc=2.8.0=h166bdaf_0
  - libuuid=2.38.1=h0b41bf4_0
  - libwebp-base=1.4.0=hd590300_0
  - libxcb=1.16=hd590300_0
  - libxcrypt=4.4.36=hd590300_1
  - libxml2=2.12.7=he7c6b58_4
  - libzlib=1.3.1=h4ab18f5_1
  - llvmlite=0.43.0=py311hbde99c3_0
  - locket=1.0.0=pyhd8ed1ab_0
  - lz4=4.3.3=py311h38e4bf4_0
  - lz4-c=1.9.4=hcb278e6_0
  - markdown=3.6=pyhd8ed1ab_0
  - markdown-it-py=3.0.0=pyhd8ed1ab_0
  - markupsafe=2.1.5=py311h459d7ec_0
  - mdurl=0.1.2=pyhd8ed1ab_0
  - msgpack-python=1.0.8=py311h52f7536_0
  - namex=0.0.8=pyhd8ed1ab_0
  - nccl=2.22.3.1=hbc370b7_1
  - ncurses=6.5=h59595ed_0
  - numba=0.60.0=py311h4bc866e_0
  - numpy=1.26.4=py311h64a7726_0
  - nvcomp=3.0.6=h10b603f_0
  - nvtx=0.2.10=py311h459d7ec_0
  - openjpeg=2.5.2=h488ebb8_0
  - openssl=3.3.1=h4bc722e_2
  - opt_einsum=3.3.0=pyhc1e730c_2
  - optree=0.12.1=py311hcddfd71_0
  - orc=2.0.1=h17fec99_1
  - packaging=24.1=pyhd8ed1ab_0
  - pandas=2.2.2=py311h14de704_1
  - partd=1.4.2=pyhd8ed1ab_0
  - pillow=10.4.0=py311h82a398c_0
  - pip=24.2=pyhd8ed1ab_0
  - protobuf=4.25.3=py311h7b78aeb_0
  - psutil=6.0.0=py311h331c9d8_0
  - pthread-stubs=0.4=h36c2ea0_1001
  - pyarrow=16.1.0=py311hbd00459_5
  - pyarrow-core=16.1.0=py311h9460f28_5_cpu
  - pyarrow-hotfix=0.6=pyhd8ed1ab_0
  - pycparser=2.22=pyhd8ed1ab_0
  - pygments=2.18.0=pyhd8ed1ab_0
  - pylibraft=24.08.01=cuda12_py311_240807_g185da16b_0
  - pynvjitlink=0.3.0=py311hd269673_0
  - pynvml=11.4.1=pyhd8ed1ab_0
  - pysocks=1.7.1=pyha2e5f31_6
  - python=3.11.9=hb806964_0_cpython
  - python-dateutil=2.9.0=pyhd8ed1ab_0
  - python-flatbuffers=24.3.25=pyh59ac667_0
  - python-tzdata=2024.1=pyhd8ed1ab_0
  - python_abi=3.11=4_cp311
  - pytz=2024.1=pyhd8ed1ab_0
  - pyyaml=6.0.2=py311h61187de_0
  - raft-dask=24.08.01=cuda12_py311_240807_g185da16b_0
  - rapids-dask-dependency=24.08.00=py_0
  - rdma-core=53.0=he02047a_0
  - re2=2023.09.01=h7f4b329_2
  - readline=8.2=h8228510_1
  - requests=2.32.3=pyhd8ed1ab_0
  - rich=13.7.1=pyhd8ed1ab_0
  - rmm=24.08.02=cuda12_py311_240807_g5aa8ebe6_0
  - s2n=1.4.19=h3400bea_0
  - scipy=1.14.0=py311h517d4fd_1
  - setuptools=72.1.0=pyhd8ed1ab_0
  - six=1.16.0=pyh6c4a22f_0
  - snappy=1.2.1=ha2e4443_0
  - sortedcontainers=2.4.0=pyhd8ed1ab_0
  - spdlog=1.12.0=hd2e6256_2
  - ta-lib=0.4.32=py311h7c22f60_0
  - tblib=3.0.0=pyhd8ed1ab_0
  - tensorboard-data-server=0.7.0=py311h63ff55d_1
  - tensorflow-estimator=2.17.0=cuda120py311h0c188d0_0
  - termcolor=2.4.0=pyhd8ed1ab_0
  - tk=8.6.13=noxft_h4845f30_101
  - toolz=0.12.1=pyhd8ed1ab_0
  - tornado=6.4.1=py311h331c9d8_0
  - treelite=4.3.0=py311he8f9275_0
  - typing-extensions=4.12.2=hd8ed1ab_0
  - typing_extensions=4.12.2=pyha770c72_0
  - tzdata=2024a=h0c530f3_0
  - ucx=1.15.0=hda83522_8
  - ucx-py=0.39.02=py311_240807_g314778e_0
  - ucxx=0.39.01=cuda12_py3.11_240807_g19a66b4_0
  - urllib3=2.2.2=pyhd8ed1ab_1
  - werkzeug=3.0.3=pyhd8ed1ab_0
  - wheel=0.44.0=pyhd8ed1ab_0
  - xorg-libxau=1.0.11=hd590300_0
  - xorg-libxdmcp=1.1.3=h7f98852_0
  - xyzservices=2024.6.0=pyhd8ed1ab_0
  - xz=5.2.6=h166bdaf_0
  - yaml=0.2.5=h7f98852_2
  - zict=3.0.0=pyhd8ed1ab_0
  - zipp=3.19.2=pyhd8ed1ab_0
  - zstandard=0.23.0=py311h5cd10c7_0
  - zstd=1.5.6=ha6fb4c9_0
  - pip:
      - beautifulsoup4==4.12.3
      - cycler==0.12.1
      - deap==1.4.1
      - filelock==3.15.4
      - fonttools==4.53.1
      - frozendict==2.4.4
      - google-auth==2.33.0
      - google-auth-oauthlib==1.2.1
      - graphsurgeon==0.4.6
      - html5lib==1.1
      - jpholiday==0.1.10
      - keras==3.4.1
      - kiwisolver==1.4.5
      - libclang==18.1.1
      - lxml==5.3.0
      - matplotlib==3.9.1.post1
      - missingno==0.5.2
      - ml-dtypes==0.3.2
      - mpmath==1.3.0
      - multitasking==0.0.11
      - networkx==3.3
      - nvidia-cublas-cu12==12.1.3.1
      - nvidia-cuda-cupti-cu12==12.1.105
      - nvidia-cuda-nvrtc-cu12==12.1.105
      - nvidia-cuda-runtime-cu12==12.1.105
      - nvidia-cudnn-cu12==9.1.0.70
      - nvidia-cufft-cu12==11.0.2.54
      - nvidia-curand-cu12==10.3.2.106
      - nvidia-cusolver-cu12==11.4.5.107
      - nvidia-cusparse-cu12==12.1.0.106
      - nvidia-nccl-cu12==2.20.5
      - nvidia-nvjitlink-cu12==12.6.20
      - nvidia-nvtx-cu12==12.1.105
      - oauthlib==3.2.2
      - peewee==3.17.6
      - platformdirs==4.2.2
      - pyaml==24.7.0
      - pyasn1==0.6.0
      - pyasn1-modules==0.4.0
      - pyparsing==3.1.2
      - pywavelets==1.6.0
      - requests-oauthlib==2.0.0
      - rsa==4.9
      - scikit-learn==1.5.1
      - scikit-optimize==0.10.2
      - seaborn==0.13.2
      - soupsieve==2.5
      - stopit==1.1.2
      - sympy==1.13.2
      - tensorboard==2.17.0
      - tensorflow==2.17.0
      - tensorflow-io-gcs-filesystem==0.37.1
      - tensorrt==10.3.0
      - tensorrt-cu12==10.3.0
      - tensorrt-cu12-bindings==10.3.0
      - tensorrt-cu12-libs==10.3.0
      - tensorrt-dispatch==8.6.1
      - threadpoolctl==3.5.0
      - torch==2.4.0+cu121
      - torchaudio==2.4.0+cu121
      - torchvision==0.19.0+cu121
      - tpot==0.12.2
      - tqdm==4.66.5
      - triton==3.0.0
      - uff==0.6.9
      - update-checker==0.18.0
      - webencodings==0.5.1
      - wrapt==1.14.1
      - xgboost==2.1.1
      - yfinance==0.2.41
```


最後にここまで読んでもできなかった人向けにyml.を置いておきます。ウイルストカハイッテナイヨ。
インターネットから謎のファイルをダウンロードするときは気をつけましょうね。僕もついこの前これ便利やなーと眺めていたものにバックドア見つけたりしたので（怖い話）
中身は先ほどのものと同じはずです。まあ一応確認してから使ってください。

https://note.com/bkwnks/n/n2eb3e352b858

```
pip install --upgrade pip setuptools
```
以上です。なんか面白そうな記事とか論文があったらコメントで教えてください。（あんまりキータ見ないけど）
ではまた。


以下本気の備忘
```
pip3 install missingno scikit-learn yfinance keras scikit-optimize jpholiday pywavelets matplotlib seaborn scipy tensorflow tpot
conda config --add channels conda-forge
conda install ta-lib
```