
仮想環境を使おう
WSLをインストールした。ここからは新しいPCなので仮想環境を作ろう!
What is 仮想環境?
物理的なデバイス(PC)の上に理論的に分割された環境と作ることができる
要するにパソコンをある種きれいに使うことができるということ。
Dockerを使おう!
Dockerの基本的な概念について知りたい場合は以下の記事参照しよう!
https://qiita.com/S4nTo/items/977d28b0eac316915702インストール手順
https://zenn.dev/seiya0/articles/tech-docker-desktop-for-win-installDocker Install
https://docs.docker.com/desktop/install/windows-install/docker -v で確認する必要あり!これで環境が構築できた。
Dockerに詳しくなろう!!
Dockerの入門的な「仮想環境がうんたら」とか「Dockerはこんな技術で~」とかはいろいろあるので書きません。
ここではDockerって結局何やれるの?どうやるの?を書いていきたい
参考程度に
https://qiita.com/fsd-fukufuku/items/524d55042b0c20651bdeネットワーク関係をやるときに
ifconfig コマンドを使いたかったがなぜかWSLでは使えなかったので以下を見ると非推奨らしいので新しいものを入れてみた
https://ubuntu.perlzemi.com/blog/20200324174004.htmlDockerに関する簡単な説明
Docker技術はPCの中に別のPCを宿らせるみたいなこと
Dockerの自分のローカルの環境とは全く無縁
なので自分のフォルダの中にDockerの環境が作られるイメージではなく別の空間に存在するイメージ
自分はこの感覚を持っていないせいで時間がバカかかった。
Dockerのマウント
そんなDockerだが自分のファイルをDockerの中に入れたいことがある。
すでに存在するファイルをDockerの中に入れたい。この時にファイルをマウントするということが必要である。
Dockerのマウントは二種類存在する
- バインドマウント DockerのホストOS つまりVSCodeでいままさに作っているディレクトリをマウントすること。これにより、自分の編集したファイルがコンテナの消去で消えることがない(永続化する)
- ボリュームマウント Dockerエンジンの中に領域がありそれをマウントすること。SQLなどを使うときにこれを行うことがある。これのバックアップを取る方法も存在する。
DevContainerを使おう
Docker環境を自分のワークスペース環境にすることができるもので環境の統一などがしやすいものになる。
使ったことがなければ次のMicrosoftのチュートリアルを用いよう。これでNode.jsの環境構築ができるチュートリアルになっている。
https://code.visualstudio.com/docs/devcontainers/tutorialdev container reference
https://containers.dev/implementors/json_reference/DockerでGPU環境を使おう!
機械学習をするためには、GPU環境を使う必要があります。GPU環境は非常に高速で快適な機械学習にとっての環境を提供してくれます!GPU環境をぜひ作りましょう!
まずは大変なほうから作ってみよう!
さてどのようにGPU環境を作るかですが、Docker+WSL2+Ubuntu+GPU環境で作ってみたい!
https://zenn.dev/yumizz/articles/627d4e4821c636使用環境 NVIDA RTX 4060Ti 16GB
やりたいこと GPUを用いた環境でPytorchによる機械学習などなどを回せるようにしたい!
結局GPUを使いたい環境構築はPython以外にはあまり考えられないないのですでにある環境を使えばそれで充分
少なくともPytorchが回せないと困る
そこで、NVIDIA Container Toolkit のチュートリアルに沿って進めてみよう!
https://docs.nvidia.com/datacenter/cloud-native/container-toolkit/latest/index.html遭遇した問題
この環境下でNVIDIAのチュートリアルを行っている際に、
Docker の構成
次のコマンドを使用して、コンテナランタイムを設定します。nvidia-ctk
sudo nvidia-ctk runtime configure --runtime=docker
このコマンドは、ホスト上のファイルを変更します。 Docker が NVIDIA Container Runtime
を使用できるように、ファイルが更新されました。nvidia-ctk/etc/docker/daemon.json
Docker デーモンを再起動します。
sudo systemctl restart docker
の部分を実行するときに、
$ sudo nvidia-ctk runtime configure --runtime=docker
[sudo] password for vyuma:
WARN[0000] Ignoring runtime-config-override flag for docker
INFO[0000] Loading config from /etc/docker/daemon.json
INFO[0000] Wrote updated config to /etc/docker/daemon.json
INFO[0000] It is recommended that docker daemon be restarted.
と、次には
$ sudo systemctl restart docker
Failed to restart docker.service: Unit docker.service not found.
というエラーが出た。
しかし、DockerDesktopの再起動をすると次のコマンドではうまく通った
sudo docker run --rm --gpus all ubuntu nvidia-smi
出力
nable to find image 'ubuntu:latest' locally
latest: Pulling from library/ubuntu
31e907dcc94a: Pull complete
Digest: sha256:8a37d68f4f73ebf3d4efafbcf66379bf3728902a8038616808f04e34a9ab63ee
Status: Downloaded newer image for ubuntu:latest
Thu Sep 12 01:32:57 2024
+-----------------------------------------------------------------------------------------+
| NVIDIA-SMI 550.73.01 Driver Version: 552.12 CUDA Version: 12.4 |
|-----------------------------------------+------------------------+----------------------+
| GPU Name Persistence-M | Bus-Id Disp.A | Volatile Uncorr. ECC |
| Fan Temp Perf Pwr:Usage/Cap | Memory-Usage | GPU-Util Compute M. |
| | | MIG M. |
|=========================================+========================+======================|
| 0 NVIDIA GeForce RTX 4060 Ti On | 00000000:01:00.0 On | N/A |
| 0% 47C P8 6W / 165W | 1516MiB / 16380MiB | 0% Default |
| | | N/A |
+-----------------------------------------+------------------------+----------------------+
+-----------------------------------------------------------------------------------------+
| Processes: |
| GPU GI CI PID Type Process name GPU Memory |
| ID ID Usage |
|=========================================================================================|
| No running processes found |
+-----------------------------------------------------------------------------------------+
そこまでできたらあとは
docker run -it --gpus all pytorch/pytorch:2.2.1-cuda12.1-cudnn8-runtime
で行ってみる。
そのあとpytorchでGPUが使えるか確認できればOK
でもDocker環境はできたけどVSCodeでの編集はどうやってやるのか?
そこでDevContanierを使おう!
https://zenn.dev/t_sumida/articles/3e87b030c30cbc公式ドキュメントが一番安心できる
https://code.visualstudio.com/docs/devcontainers/containersあとはChatGPTに聞くとかなりのことは教えてくれる!
環境構築編(言語篇)
VSCodeの拡張機能で十分なものはこの環境構築には入れていない。(バニラCSS JS Htmlなど)
node.js環境構築編
nodeについてはdevContainerの基本セットが存在するので基本的にはそちらを用いる。
ただし内部でDockerを使わないプロジェクトもある。あとは、Dockerがちゃんと整備されていないような開発環境の時には、ローカルで見ることができていたほうがよい。またすぐに確認したい時などはローカル環境で確認するほうが早い時もある。
そこで開発環境のために、node.jsのバージョン管理ツールを導入することにする。
Node.js用バージョン管理ツールNVMのインストール
Node.jsはバージョンアップがたびたびされるためにバージョンを確実に揃えられるようにするためにバージョン管理ツールnvmをインストールする。
次の記事を用いて、nvmをインストールして、その中で最新バージョンのNodeを入れることにする。
https://zenn.dev/keijiek/articles/4976559b876090NVM公式ドキュメント
https://github.com/nvm-sh/nvm#install-scriptこの記事でインストールすることができる!!
この記事にあるようにnpmとyarmもインストールしておこう!
https://qiita.com/c8h9no2/items/9a2e1278976db1b390a5環境構築の時に役立ちそうな記事
npxとnpmの違いって何?とおもっている方向け
https://qiita.com/monaka33/items/5597f4aabde5c3f5de11https://zenn.dev/ikuraikura/articles/71b917ab11ae690e3cd7LaTeX環境構築編
ここだけでも1日がかりかもしれないので念頭に置いておくべし。もしかしたら一番難しい作業かもしれない。
LaTeX環境は本当は環境構築はおそらくこの環境構築の中でも随一の難しさを誇る。必要なライブライや設定がとても多い。そのために手前味噌ではあるが、次のファイルを参照するととても良い。
https://github.com/vyuma/LaTeX_repo/releases/tag/v1.1.0おすすめ記事


