# Начало работы с GitHub Codespaces для машинного обучения

Узнайте о работе над проектами машинного обучения с GitHub Codespaces и встроенными инструментами.

## Введение

В этом руководстве описывается машинное обучение с GitHub Codespaces. Вы создадите простой классификатор изображений, узнайте о некоторых средствах, которые предварительно установлены в GitHub Codespaces, и узнайте, как открыть пространство кода в JupyterLab.

## Создание простого классификатора изображений

Мы будем использовать записную книжку Jupyter для создания простого классификатора изображений.

Записные книжки Jupyter — это наборы ячеек, которые можно выполнять друг за другом. Используемая записная книжка содержит ряд ячеек, создающих классификатор изображений с помощью [PyTorch](https://pytorch.org/). Каждая ячейка представляет собой разные этапы этого процесса: скачивание набора данных, настройка нейронной сети, обучение модели, а затем тестирование этой модели.

Мы запустим все ячейки последовательно для выполнения всех этапов построения классификатора изображений. Когда мы это делаем, Jupyter сохраняет выходные данные обратно в записную книжку, чтобы можно было изучить результаты.

### Создание codespace

1. Перейдите в репозиторий [шаблонов github/codespaces-jupyter](https://github.com/github/codespaces-jupyter) .
2. Нажмите кнопку **"Использовать этот шаблон**", а затем нажмите кнопку **"Открыть" в пространстве** кода.

   ![Снимок экрана: кнопка "Использовать этот шаблон" и раскрывающееся меню, развернутое для отображения параметра "Открыть в пространстве кода".](/assets/images/help/repository/use-this-template-button.png)

Пространство кода для этого шаблона откроется в веб-версии Visual Studio Code.

### Открытие записной книжки классификатора изображений

Образ контейнера по умолчанию, используемый GitHub Codespaces, включает набор библиотек машинного обучения, предварительно установленных в пространстве кода. Например, Numpy, pandas, SciPy, Matplotlib, seaborn, scikit-learn, Keras, PyTorch, Requests и Plotly. Дополнительные сведения о образе по умолчанию см. в разделе [Основные сведения о контейнерах разработки](/ru/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 в рекомендуемом месте.

   ![Скриншот выпадающего меню «Выбрать среду Python». Первый вариант в списке версий Python помечен как «Рекомендуемо».](/assets/images/help/codespaces/jupyter-choose-python.png)

3. Прокрутите вниз, чтобы просмотреть выходные данные каждой ячейки.

   ![Снимок экрана: ячейка в редакторе с заголовком "Шаг 3. Обучение сети и сохранение модели".](/assets/images/help/codespaces/jupyter-notebook-step3.png)

## Открытие пространства кода в JupyterLab

Вы можете открыть пространство кода в JupyterLab на странице "Ваши пространства кода" в [github.com/codespaces](https://github.com/codespaces) или с помощью GitHub CLI. Дополнительные сведения см. в разделе [Открытие существующего пространства кода](/ru/codespaces/developing-in-a-codespace/opening-an-existing-codespace).

Приложение JupyterLab должно быть установлено в открываемом пространстве кода. Образ контейнера разработки по умолчанию включает JupyterLab, поэтому пространства кода, созданные на основе образа по умолчанию, всегда будут установлены JupyterLab. Дополнительные сведения о образе по умолчанию см. в разделе AUTOTITLE и репозитория[](https://github.com/devcontainers/images/tree/main/src/universal)`devcontainers/images`.[ ](/ru/codespaces/setting-up-your-project-for-codespaces/adding-a-dev-container-configuration/introduction-to-dev-containers#using-the-default-dev-container-configuration) Если вы не используете образ по умолчанию в конфигурации контейнера разработки, можно установить JupyterLab, добавив `ghcr.io/devcontainers/features/python` эту функцию в `devcontainer.json` файл. Этот параметр `"installJupyterlab": true`следует включить. Дополнительные сведения см. в разделе README для [`python`](https://github.com/devcontainers/features/tree/main/src/python#python-python) функции в репозитории.`devcontainers/features`

## Настройка NVIDIA CUDA для пространства кода

> \[!NOTE]
> Этот раздел применяется только к клиентам, которые могут создавать пространства кода на компьютерах, использующих GPU. Возможность выбора типа компьютера, использующего GPU, была предложена выбранным клиентам в течение пробного периода. Этот параметр недоступен.

Для некоторых программ необходимо установить NVIDIA CUDA для использования GPU пространства кода. В этом случае можно создать собственную пользовательскую конфигурацию с помощью файла `devcontainer.json` и указать, что необходимо установить CUDA. Дополнительные сведения о создании пользовательской конфигурации см. в разделе [Основные сведения о контейнерах разработки](/ru/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. В пространстве кода откройте `.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 CTRL SHIFT<kbd><kbd>+<kbd>+</kbd>P</kbd> / </kbd></kbd>), а затем начните вводить "перестроить". Щелкните **Codespaces: Перестроить контейнер**.

   ![Снимок экрана: палитра команд с поиском "перестроить контейнер" и параметром "Codespace: Перестроить контейнер" в раскрывающемся списке.](/assets/images/help/codespaces/codespaces-rebuild.png)

   > \[!TIP]
   > Иногда может потребоваться выполнить полную перестроение, чтобы очистить кэш и перестроить контейнер с помощью свежих образов. Дополнительные сведения см. в разделе [Перестроение контейнера в пространстве кода](/ru/codespaces/developing-in-codespaces/rebuilding-the-container-in-a-codespace#about-rebuilding-a-container).
   > Контейнер codespace будет перестроен. Операция займет несколько минут. После перестройки codespace автоматически открывается повторно.

5. Опубликуйте изменения в репозитории, чтобы CUDA была установлена в любых новых пространствах кода, создаваемых из этого репозитория в будущем. Дополнительные сведения см. в разделе [Создание пространства кода на основе шаблона](/ru/codespaces/developing-in-a-codespace/creating-a-codespace-from-a-template#publishing-from-vs-code).