# 機械学習用の GitHub Codespaces の使用開始

GitHub Codespaces とそのすぐに使えるツールを使用して、機械学習プロジェクトに取り組む方法について学習します。

## はじめに

このガイドでは、GitHub Codespaces を使用した機械学習について説明します。 単純な画像分類器を構築し、GitHub Codespaces にプレインストールされているツールの一部について学習して、JupyterLab で codespace を開く方法を確認します。

## 単純な画像分類器を構築する

Jupyter Notebook を使用して、単純な画像分類器を構築します。

Jupyter Notebook は、順次実行できるセルのセットです。 使用するノートブックには、[PyTorch](https://pytorch.org/) を使って画像分類器を構築する多数のセルが含まれています。 各セルは、データセットのダウンロード、ニューラル ネットワークの設定、モデルのトレーニング、そのモデルのテストなど、そのプロセスの異なるフェーズです。

すべてのセルを順番に実行して、画像分類器を構築するすべてのフェーズを実行します。 この操作を行うと、Jupyter によって出力がノートブックに保存され、結果を確認できるようになります。

### codespace を作成する

1. ```
          [github/codespaces-jupyter](https://github.com/github/codespaces-jupyter) テンプレート リポジトリに移動します。
   ```
2. **\[このテンプレートを使用する]** をクリックし、 **\[codespace で開く]** を選びます。

   ![\[このテンプレートを使用\] ボタンと、ドロップダウン メニューが展開されて \[codespace で開く\] が表示されている状態のスクリーンショット。](/assets/images/help/repository/use-this-template-button.png)

このテンプレートの codespace は、Web ベース バージョンの Visual Studio Code で開きます。

### 画像分類器ノートブックを開く

GitHub Codespaces によって使用される既定のコンテナー イメージには、codespace にプレインストールされている一連の機械学習ライブラリが含まれています。 たとえば、Numpy、pandas、SciPy、Matplotlib、seaborn、scikit-learn、Keras、PyTorch、Requests、Plotly などです。 既定のイメージについて詳しくは、「[開発コンテナーの概要](/ja/codespaces/setting-up-your-project-for-codespaces/adding-a-dev-container-configuration/introduction-to-dev-containers#using-the-default-dev-container-configuration)」と [devcontainers/images](https://github.com/devcontainers/images/tree/main/src/universal) リポジトリをご覧ください。

1. VS Code エディターで、表示されている \[作業の開始] タブを閉じます。
2. ```
          `notebooks/image-classifier.ipynb` ノートブック ファイルを開きます。
   ```

### 画像分類器を構築する

画像分類器ノートブックには、データセットのダウンロード、ニューラル ネットワークのトレーニング、そのパフォーマンスの評価に必要なすべてのコードが含まれています。

1. ```
          **[すべて実行]** をクリックして、ノートブックのセルをすべて実行します。
   ```

   !["image-classifier.ipynb" ファイルのエディター タブの上部のスクリーンショット。 "すべて実行" というラベルの付いたボタンの上にカーソルが置かれています。](/assets/images/help/codespaces/jupyter-run-all.png)

2. カーネル ソースの選択を求められたら、**Python 環境** を選択し、推奨される場所でPythonのバージョンを選択します。

   ![\[Select a Python Environment\](Python環境の選択) ドロップダウンのスクリーンショット。 Pythonバージョンの一覧の最初のオプションには、"推奨" というラベルが付けられます。](/assets/images/help/codespaces/jupyter-choose-python.png)

3. 下にスクロールして、各セルの出力を表示します。

   ![エディターのセルのスクリーンショット。ヘッダーは "手順 3: ネットワークをトレーニングし、モデルを保存する" です。](/assets/images/help/codespaces/jupyter-notebook-step3.png)

## JupyterLab で codespace を開く

codespace は [github.com/codespaces](https://github.com/codespaces) の "Your codespaces" ページの JupyterLab で開くことができます。あるいは、GitHub CLI を使用して開くことができます。 詳しくは、「[既存の codespace を開く](/ja/codespaces/developing-in-a-codespace/opening-an-existing-codespace)」をご覧ください。

JupyterLab アプリケーションは、開いている codespace にインストールされている必要があります。 既定の開発コンテナー イメージには JupyterLab が含まれているため、既定のイメージから作成された codespace には常に JupyterLab がインストールされます。 既定のイメージの詳細については、「[開発コンテナーの概要](/ja/codespaces/setting-up-your-project-for-codespaces/adding-a-dev-container-configuration/introduction-to-dev-containers#using-the-default-dev-container-configuration)」と [`devcontainers/images`](https://github.com/devcontainers/images/tree/main/src/universal) リポジトリを参照してください。 開発コンテナー構成で既定のイメージを使用していない場合は、`devcontainer.json` ファイルに `ghcr.io/devcontainers/features/python` 機能を追加して JupyterLab をインストールできます。 オプション `"installJupyterlab": true`を含める必要があります。 詳しくは、`devcontainers/features` リポジトリにある [`python`](https://github.com/devcontainers/features/tree/main/src/python#python-python) 機能の Readme をご覧ください。

## codespace 用に NVIDIA CUDA を構成する

> \[!NOTE]
> このセクションは、GPU を使うマシン上で codespace を作成できるお客様にのみ該当します。 GPU を使っているマシンの種類を選択する機能は、試用期間中に一部のお客様に提供されました。 このオプションは一般提供されていません。

一部のソフトウェアでは、codespace の GPU を使用するために NVIDIA CUDA をインストールする必要があります。 その場合は、`devcontainer.json` ファイルを使用して独自のカスタム構成を作成し、CUDA をインストールする必要があることを指定できます。 カスタム構成の作成について詳しくは、「[開発コンテナーの概要](/ja/codespaces/setting-up-your-project-for-codespaces/adding-a-dev-container-configuration/introduction-to-dev-containers#creating-a-custom-dev-container-configuration)」をご覧ください。

```
          `nvidia-cuda` 機能を追加すると実行されるスクリプトのすべての詳細については、[devcontainers/features](https://github.com/devcontainers/features/tree/main/src/nvidia-cuda) リポジトリをご確認ください。
```

1. codespace 内で、エディターで `.devcontainer/devcontainer.json` ファイルを開きます。

2. 次の内容を含む最上位の `features` オブジェクトを追加します。

   ```json copy
     "features": {
       "ghcr.io/devcontainers/features/nvidia-cuda:1": {
         "installCudnn": true
       }
     }
   ```

   ```
          `features` オブジェクトについて詳しくは、「[開発コンテナーの仕様](https://containers.dev/implementors/features/#devcontainer-json-properties)」を参照してください。
   ```

   このチュートリアル用に作成した画像分類器リポジトリの `devcontainer.json` ファイルを使用している場合、`devcontainer.json` ファイルは次のようになります。

   ```json
   {
     "customizations": {
       "vscode": {
         "extensions": [
           "ms-python.python",
           "ms-toolsai.jupyter"
         ]
       }
     },
     "features": {
       "ghcr.io/devcontainers/features/nvidia-cuda:1": {
         "installCudnn": true
       }
     }
   }
   ```

3. 変更を保存します。

4. VS Code Command Palette にアクセス (<kbd>Shift</kbd>+<kbd>Command</kbd>+<kbd>P</kbd> / <kbd>Ctrl</kbd>+<kbd>Shift</kbd>+<kbd>P</kbd>) し、「リビルド」と入力します。 **\[Codespaces: コンテナーのリビルド]** をクリックします。

   !["rebuild container" が検索され、ドロップダウンで \[Codespace: Rebuild Container\] オプションが強調されている、コマンド パレットのスクリーンショット。](/assets/images/help/codespaces/codespaces-rebuild.png)

   > \[!TIP]
   > キャッシュをクリアし、新しいイメージを使用してコンテナーを再構築するために、完全なリビルドを実行することが必要になる場合があります。 詳しくは、「[codespace でのコンテナーのリビルド](/ja/codespaces/developing-in-codespaces/rebuilding-the-container-in-a-codespace#about-rebuilding-a-container)」をご覧ください。codespace コンテナーが再構築されます。 これには数分かかります。 再構築が完了すると、自動的に codespace が再び開きます。

5. 変更をリポジトリに発行し、CUDA が今後このリポジトリから作成する新しい codespace にインストールされるようにします。 詳しくは、「[テンプレートから codespace を作成する](/ja/codespaces/developing-in-a-codespace/creating-a-codespace-from-a-template#publishing-from-vs-code)」をご覧ください。