Yandex Cloud
Поиск
Связаться с намиПодключиться
  • Документация
  • Блог
  • Все сервисы
  • Статус работы сервисов
    • Популярные
    • Инфраструктура и сеть
    • Платформа данных
    • Контейнеры
    • Инструменты разработчика
    • Бессерверные вычисления
    • Безопасность
    • Мониторинг и управление ресурсами
    • Машинное обучение
    • Бизнес-инструменты
  • Все решения
    • По отраслям
    • По типу задач
    • Экономика платформы
    • Безопасность
    • Техническая поддержка
    • Каталог партнёров
    • Обучение и сертификация
    • Облако для стартапов
    • Облако для крупного бизнеса
    • Центр технологий для общества
    • Облако для интеграторов
    • Поддержка IT-бизнеса
    • Облако для фрилансеров
    • Обучение и сертификация
    • Блог
    • Документация
    • Контент-программа
    • Мероприятия и вебинары
    • Контакты, чаты и сообщества
    • Идеи
    • Истории успеха
    • Тарифы Yandex Cloud
    • Промоакции и free tier
    • Правила тарификации
  • Документация
  • Блог
Проект Яндекса
© 2025 ООО «Яндекс.Облако»
Yandex Cloud Functions
  • Сопоставление с другими сервисами Yandex Cloud
    • Все практические руководства
    • Создание навыка Алисы
    • Развертывание веб-приложения
    • Разработка навыка Алисы и сайта с авторизацией
    • Запись данных с устройства в базу данных
    • Запись логов балансировщика в PostgreSQL
    • Разработка Slack-бота
    • Разработка Telegram-бота
    • Подключение к базе данных YDB из функции на Python
    • Подключение к базе данных YDB из функции на Node.js
    • Конвертация видео в GIF на Python
    • Создание функции Node.js с помощью TypeScript
    • Разработка пользовательской интеграции
    • Создание триггера для бюджетов, который вызывает функцию для остановки ВМ
    • Создание интерактивного serverless-приложения с использованием WebSocket
    • Автоматическое копирование объектов из одного бакета Object Storage в другой
    • Запуск вычислений по расписанию в DataSphere
    • Интерактивная отладка функций
    • Регулярное асинхронное распознавание аудиофайлов из Object Storage
    • Канареечный релиз функции Cloud Functions
    • Развертывание отказоустойчивой архитектуры с прерываемыми ВМ
    • Создание триггеров, которые вызывают функции для остановки ВМ и отправки уведомлений в Telegram
    • Загрузка данных из Яндекс Директ в витрину Yandex Managed Service for ClickHouse® с использованием Yandex Cloud Functions, Yandex Object Storage и Yandex Data Transfer
    • Мониторинг состояния географически распределенных устройств
    • Мониторинг показаний датчиков и уведомления о событиях
    • Эмуляция множества IoT-устройств
    • Передача событий Yandex Cloud Postbox в Yandex Data Streams и их анализ с помощью Yandex DataLens
    • Сокращатель ссылок
    • Yandex Tracker: экспорт и визуализация данных
    • Запуск вычислений в DataSphere с помощью API
    • Разработка Telegram-бота для распознавания текста и аудио
    • Настройка реагирования в Yandex Cloud Logging и Cloud Functions
    • Разработка функций в Functions Framework и их развертывание в Yandex Serverless Containers
  • Инструменты
  • Правила тарификации
  • Управление доступом
  • Справочник Terraform
  • Метрики Monitoring
  • Аудитные логи Audit Trails
  • История изменений
  • Вопросы и ответы
  • Обучающие курсы

В этой статье:

  • Перед началом работы
  • Необходимые платные ресурсы
  • Подготовьте инфраструктуру
  • Создайте каталог
  • Создайте сервисный аккаунт для проекта DataSphere
  • Добавьте сервисный аккаунт в проект
  • Подготовьте ноутбуки и архитектуру нейросети
  • Обучите нейросеть
  • Загрузите архитектуру модели и веса
  • Создайте Cloud Functions
  • Создайте версию Cloud Functions
  • Как удалить созданные ресурсы
  1. Практические руководства
  2. Запуск вычислений в DataSphere с помощью API

Запуск вычислений в Yandex DataSphere с помощью API

Статья создана
Yandex Cloud
Обновлена 6 марта 2025 г.
  • Перед началом работы
    • Необходимые платные ресурсы
  • Подготовьте инфраструктуру
    • Создайте каталог
    • Создайте сервисный аккаунт для проекта DataSphere
    • Добавьте сервисный аккаунт в проект
  • Подготовьте ноутбуки и архитектуру нейросети
  • Обучите нейросеть
  • Загрузите архитектуру модели и веса
  • Создайте Cloud Functions
    • Создайте версию Cloud Functions
  • Как удалить созданные ресурсы

В Yandex DataSphere с помощью API можно запускать исполнение кода, не заходя в проект. Это может быть полезно, если нужно автоматизировать рутинные операции, дообучить нейросеть или развернуть сервис, который не требует быстрого ответа по API.

В практическом руководстве на примере простой сверточной нейронной сети CNN показано, как организовать эксплуатацию модели, обученной в DataSphere, с помощью Yandex Cloud Functions. Результат работы модели будет записываться в хранилище проекта DataSphere.

Если вы хотите развернуть сервис, который будет возвращать результаты по API, см. Развертывание сервиса на основе Docker-образа с FastAPI.

  1. Подготовьте инфраструктуру.
  2. Подготовьте ноутбуки.
  3. Обучите нейросеть.
  4. Загрузите архитектуру модели и веса.
  5. Создайте Cloud Functions.

Если созданные ресурсы вам больше не нужны, удалите их.

Перед началом работыПеред началом работы

Перед началом работы нужно зарегистрироваться в Yandex Cloud, настроить сообщество и привязать к нему платежный аккаунт:

  1. На главной странице DataSphere нажмите Попробовать бесплатно и выберите аккаунт для входа — Яндекс ID или рабочий аккаунт в федерации (SSO).
  2. Выберите организацию Yandex Cloud Organization, в которой вы будете работать в Yandex Cloud.
  3. Создайте сообщество.
  4. Привяжите платежный аккаунт к сообществу DataSphere, в котором вы будете работать. Убедитесь, что у вас подключен платежный аккаунт, и он находится в статусе ACTIVE или TRIAL_ACTIVE. Если платежного аккаунта нет, создайте его в интерфейсе DataSphere.

Необходимые платные ресурсыНеобходимые платные ресурсы

В стоимость реализации регулярных запусков входят:

  • плата за использование вычислительных ресурсов DataSphere;
  • плата за количество вызовов функции Cloud Functions.

Подготовьте инфраструктуруПодготовьте инфраструктуру

Войдите в консоль управления Yandex Cloud и выберите организацию, в которой вы работаете с DataSphere. На странице Yandex Cloud Billing убедитесь, что у вас подключен платежный аккаунт.

Если у вас есть активный платежный аккаунт, на странице облака вы можете создать или выбрать каталог, в котором будет работать ваша инфраструктура.

Примечание

Если вы работаете с Yandex Cloud через федерацию удостоверений, вам может быть недоступна платежная информация. В этом случае обратитесь к администратору вашей организации в Yandex Cloud.

Создайте каталогСоздайте каталог

Консоль управления
  1. В консоли управления выберите облако и нажмите кнопку Создать каталог.
  2. Введите имя каталога, например, data-folder.
  3. Нажмите кнопку Создать.

Создайте сервисный аккаунт для проекта DataSphereСоздайте сервисный аккаунт для проекта DataSphere

Для доступа к проекту DataSphere из функции Cloud Functions вам понадобится сервисный аккаунт с ролью datasphere.community-projects.editor.

Консоль управления
  1. В консоли управления перейдите в каталог data-folder.
  2. В списке сервисов выберите Identity and Access Management.
  3. Нажмите кнопку Создать сервисный аккаунт.
  4. Введите имя сервисного аккаунта, например, datasphere-sa.
  5. Нажмите Добавить роль и назначьте сервисному аккаунту роль datasphere.community-projects.editor.
  6. Нажмите кнопку Создать.

Добавьте сервисный аккаунт в проектДобавьте сервисный аккаунт в проект

Чтобы сервисный аккаунт мог запускать проект DataSphere, добавьте его в список участников проекта:

  1. Выберите нужный проект в своем сообществе или на главной странице DataSphere во вкладке Недавние проекты.

  2. На вкладке Участники нажмите Добавить участника.
  3. Выберите аккаунт datasphere-sa и нажмите Добавить.

Подготовьте ноутбуки и архитектуру нейросетиПодготовьте ноутбуки и архитектуру нейросети

Склонируйте Git-репозиторий, в котором находятся ноутбуки с примерами обучения и тестирования модели машинного обучения:

  1. В верхнем меню нажмите Git и выберите Clone.
  2. В открывшемся окне введите URI репозитория https://github.com/yandex-cloud-examples/yc-datasphere-batch-execution.git и нажмите кнопку Clone.

Дождитесь окончания клонирования, это может занять некоторое время. Папка cклонированного репозитория появится в разделе File Browser.

В репозитории содержатся два ноутбука и архитектура нейросети:

  • train_classifier.ipynb — для скачивания обучающей выборки датасета CIFAR10 и обучения простой нейронной сети;

  • test_classifier.ipynb — для тестирования модели;

  • my_nn_model.py — архитектура нейросети. Для классификации на вход нейросети подаются трехканальные изображения. Она содержит два сверточных слоя с maxpool слоем между ними и три линейных слоя:

    import torch.nn as nn
    import torch.nn.functional as F
    import torch
    
    class Net(nn.Module):
        def __init__(self):
            super().__init__()
            self.conv1 = nn.Conv2d(3, 6, 5)
            self.pool = nn.MaxPool2d(2, 2)
            self.conv2 = nn.Conv2d(6, 16, 5)
            self.fc1 = nn.Linear(16 * 5 * 5, 120)
            self.fc2 = nn.Linear(120, 84)
            self.fc3 = nn.Linear(84, 10)
    
        def forward(self, x):
            x = self.pool(F.relu(self.conv1(x)))
            x = self.pool(F.relu(self.conv2(x)))
            x = torch.flatten(x, 1) # flatten all dimensions except batch
            x = F.relu(self.fc1(x))
            x = F.relu(self.fc2(x))
            x = self.fc3(x)
            return x
    

Обучите нейросетьОбучите нейросеть

В ноутбуке train_classifier.ipynb вы скачаете обучающую выборку датасета CIFAR10 и обучите простую нейронную сеть. Веса обученной модели сохраняются в хранилище проекта под названием cifar_net.pth.

  1. Откройте проект DataSphere:

    1. Выберите нужный проект в своем сообществе или на главной странице DataSphere во вкладке Недавние проекты.

    2. Нажмите кнопку Открыть проект в JupyterLab и дождитесь окончания загрузки.
    3. Откройте вкладку с ноутбуком.
  2. Импортируйте библиотеки, необходимые для обучения модели:

    import torch
    import torchvision
    import torchvision.transforms as transforms
    import torch.optim as optim
    from my_nn_model import Net
    
  3. Загрузите датасет CIFAR10 для обучения модели. Изображения в датасете относятся к 10 категориям:

    transform = transforms.Compose(
        [transforms.ToTensor(),
        transforms.Normalize((0.5, 0.5, 0.5), (0.5, 0.5, 0.5))])
    
    batch_size = 4
    
    trainset = torchvision.datasets.CIFAR10(root='./data', train=True,
                                            download=True, transform=transform)
    trainloader = torch.utils.data.DataLoader(trainset, batch_size=batch_size,
                                            shuffle=True, num_workers=2)
    
    classes = ('plane', 'car', 'bird', 'cat',
            'deer', 'dog', 'frog', 'horse', 'ship', 'truck')
    
  4. Выведите на экран примеры изображений, которые содержатся в датасете:

    import matplotlib.pyplot as plt
    import numpy as np
    
    def imshow(img):
        img = img / 2 + 0.5     # unnormalize
        npimg = img.numpy()
        plt.imshow(np.transpose(npimg, (1, 2, 0)))
        plt.show()
    
    dataiter = iter(trainloader)
    images, labels = next(dataiter)
    imshow(torchvision.utils.make_grid(images))
    print(' '.join(f'{classes[labels[j]]:5s}' for j in range(batch_size)))
    
  5. Создайте функцию потерь и оптимизатор, необходимые для обучения нейросети:

    device = torch.device('cuda' if torch.cuda.is_available() else 'cpu')
    net = Net()
    net.to(device)
    
    criterion = nn.CrossEntropyLoss()
    optimizer = optim.SGD(net.parameters(), lr=0.001, momentum=0.9)
    
  6. Запустите процесс обучения на 5 эпохах:

    for epoch in range(5): 
        running_loss = 0.0
        for i, data in enumerate(trainloader, 0):
            inputs, labels = data[0].to(device), data[1].to(device)
    
            optimizer.zero_grad()
    
            outputs = net(inputs)
            loss = criterion(outputs, labels)
            loss.backward()
            optimizer.step()
    
            running_loss += loss.item()
            if i % 2000 == 1999:
                print(f'[{epoch + 1}, {i + 1:5d}] loss: {running_loss / 2000:.3f}')
                running_loss = 0.0
    
    print('Finished Training')
    
  7. Сохраните полученную модель на проектный диск:

    torch.save(net.state_dict(), './cifar_net.pth')
    

Загрузите архитектуру модели и весаЗагрузите архитектуру модели и веса

В ноутбуке test_classifier.ipynb вы загрузите архитектуру модели и веса, созданные во время работы файла train_classifier.ipynb. Загруженная модель используется для прогнозов на тестовой выборке. Результаты прогноза сохраняются в файле test_predictions.csv.

  1. Откройте проект DataSphere:

    1. Выберите нужный проект в своем сообществе или на главной странице DataSphere во вкладке Недавние проекты.

    2. Нажмите кнопку Открыть проект в JupyterLab и дождитесь окончания загрузки.
    3. Откройте вкладку с ноутбуком.
  2. Импортируйте библиотеки, необходимые для работы с моделью и создания прогнозов:

    import torch
    import torchvision
    import torchvision.transforms as transforms
    from my_nn_model import Net
    import pandas as pd
    
  3. Подготовьте объекты, которые позволят обращаться к тестовой выборке:

    transform = transforms.Compose(
        [transforms.ToTensor(),
        transforms.Normalize((0.5, 0.5, 0.5), (0.5, 0.5, 0.5))])
    
    batch_size = 4
    
    testset = torchvision.datasets.CIFAR10(root='./data', train=False,
                                        download=True, transform=transform)
    testloader = torch.utils.data.DataLoader(testset, batch_size=batch_size,
                                            shuffle=False, num_workers=2)
    
    classes = ('plane', 'car', 'bird', 'cat',
            'deer', 'dog', 'frog', 'horse', 'ship', 'truck')
    
  4. Определите конфигурацию ресурсов, на которой будет выполняться модель — СPU или GPU:

    device = torch.device('cuda' if torch.cuda.is_available() else 'cpu')
    
  5. Загрузите веса обученной модели и сделайте прогнозы на тестовой выборке:

    net = Net()
    net.to(device)
    net.load_state_dict(torch.load('./cifar_net.pth'))
    
    predictions = []
    predicted_labels = []
    with torch.no_grad():
        for data in testloader:
            images, labels = data[0].to(device), data[1].to(device)
            outputs = net(images)
            _, predicted = torch.max(outputs.data, 1)
            predictions.append(predicted.tolist())
            predicted_labels.append([classes[predicted[j]] for j in range(batch_size)])
    
  6. Сохраните прогнозы в формате pandas.DataFrame:

    final_pred = pd.DataFrame({'class_idx': [item for sublist in predictions for item in sublist],
                               'class': [item for sublist in predicted_labels for item in sublist]})
    
  7. Сохраните прогнозы модели в файл:

    final_pred.to_csv('/home/jupyter/datasphere/project/test_predictions.csv')
    

Создайте Cloud FunctionsСоздайте Cloud Functions

Чтобы запускать исполнение ячеек, не открывая JupyterLab, вам понадобится Cloud Functions, которая будет инициировать запуск вычислений в ноутбуке по API.

Консоль управления
  1. В консоли управления перейдите в каталог, в котором хотите создать функцию.
  2. Выберите сервис Cloud Functions.
  3. Нажмите кнопку Создать функцию.
  4. Введите имя функции, например, ai-function.
  5. Нажмите кнопку Создать функцию.

Создайте версию Cloud FunctionsСоздайте версию Cloud Functions

Версия содержит код функции, параметры запуска и все необходимые зависимости.

Консоль управления
  1. В консоли управления перейдите в каталог, в котором находится функция.

  2. Выберите сервис Cloud Functions.

  3. Выберите функцию, версию которой хотите создать.

  4. В разделе Последняя версия нажмите кнопку Создать в редакторе.

  5. Выберите среду выполнения Python. Не выбирайте опцию Добавить файлы с примерами кода.

  6. Выберите способ Редактор кода.

  7. Нажмите Создать файл и введите имя файла, например index.

  8. Введите код функции, подставив идентификатор вашего проекта и абсолютный путь к ноутбуку в проекте:

    import requests
    
    def handler(event, context):
    
        url = 'https://datasphere.api.cloud.yandex.net/datasphere/v2/projects/<идентификатор_проекта>:execute'
        body = {"notebookId": "/home/jupyter/datasphere/project/test_classifier.ipynb"}
        headers = {"Content-Type" : "application/json",
                   "Authorization": "Bearer {}".format(context.token['access_token'])}
        resp = requests.post(url, json = body, headers=headers)
    
        return {
        'body': resp.json(),
        }
    

    Где:

    • <идентификатор_проекта> — идентификатор проекта DataSphere, который расположен на странице проекта под названием.
    • notebookId — абсолютный путь к ноутбуку в проекте.
  9. В блоке Параметры задайте параметры версии:

    • Точка входа: index.handler.
    • Сервисный аккаунт: datasphere-sa.
  10. В правом верхнем углу нажмите Сохранить изменения.

Как удалить созданные ресурсыКак удалить созданные ресурсы

Чтобы перестать платить за созданные ресурсы:

  • Удалите функцию.
  • Удалите проект.

Была ли статья полезна?

Предыдущая
Yandex Tracker: экспорт и визуализация данных
Следующая
Разработка Telegram-бота для распознавания текста и аудио
Проект Яндекса
© 2025 ООО «Яндекс.Облако»