Yandex Cloud
  • Сервисы
  • Решения
  • Почему Yandex Cloud
  • Сообщество
  • Тарифы
  • Документация
  • Связаться с нами
Подключиться
Language / Region
© 2022 ООО «Яндекс.Облако»
Yandex Managed Service for ClickHouse
  • Начало работы
  • Пошаговые инструкции
    • Все инструкции
    • Информация об имеющихся кластерах
    • Создание кластера
    • Подключение к базе данных
    • Остановка и запуск кластера
    • SQL-запросы в консоли управления
    • Изменение настроек кластера и базы данных
    • Настройка доступа к ObjectStorage
    • Подключение внешних словарей
    • Подключение собственной геобазы
    • Управление моделями машинного обучения
    • Управление схемами формата данных
    • Подключение к DataLens
    • Изменение версии ClickHouse
    • Управление хостами ZooKeeper
    • Управление хостами ClickHouse
    • Управление базами данных
    • Управление пользователями БД
    • Управление резервными копиями
    • Управление шардами
    • Управление группами шардов
    • Просмотр логов кластера
    • Удаление кластера
    • Мониторинг состояния кластера и хостов
  • Практические руководства
    • Добавление данных в БД
    • Шардирование таблиц
    • Использование гибридного хранилища
    • Получение данных из Managed Service for Apache Kafka®
    • Получение данных из RabbitMQ
    • Обмен данными с Data Proc
    • Настройка Yandex Cloud DNS для доступа к кластеру из других облачных сетей
    • Анализ логов Object Storage при помощи DataLens
    • Настройка кластера под Graphite
  • Концепции
    • Взаимосвязь ресурсов сервиса
    • Классы хостов
      • Действующие классы хостов
      • Архив
        • До 1 июня 2020 года
      • Использование устаревших классов хостов
    • Сеть в Managed Service for ClickHouse
    • Квоты и лимиты
    • Типы хранилища
    • Резервные копии
    • Репликация
    • Словари
    • Шардирование
    • Техническое обслуживание
    • Поддерживаемые клиенты
    • Управление памятью в Managed Service for ClickHouse
    • Политика работы с версиями ClickHouse
    • Настройки ClickHouse
  • Управление доступом
  • Правила тарификации
    • Действующие правила
    • Архив
      • До 1 января 2019 года
      • С 1 января до 1 марта 2019 года
      • С 1 марта 2019 года до 1 февраля 2020 года
  • Справочник API
    • Аутентификация в API
    • gRPC (англ.)
      • Overview
      • BackupService
      • ClusterService
      • DatabaseService
      • FormatSchemaService
      • MlModelService
      • ResourcePresetService
      • UserService
      • VersionsService
      • OperationService
    • REST (англ.)
      • Overview
      • Backup
        • Overview
        • get
        • list
      • Cluster
        • Overview
        • addHosts
        • addShard
        • addZookeeper
        • backup
        • create
        • createExternalDictionary
        • createShardGroup
        • delete
        • deleteExternalDictionary
        • deleteHosts
        • deleteShard
        • deleteShardGroup
        • get
        • getShard
        • getShardGroup
        • list
        • listBackups
        • listHosts
        • listLogs
        • listOperations
        • listShardGroups
        • listShards
        • move
        • rescheduleMaintenance
        • restore
        • start
        • stop
        • streamLogs
        • update
        • updateHosts
        • updateShard
        • updateShardGroup
      • Database
        • Overview
        • create
        • delete
        • get
        • list
      • FormatSchema
        • Overview
        • create
        • delete
        • get
        • list
        • update
      • MlModel
        • Overview
        • create
        • delete
        • get
        • list
        • update
      • ResourcePreset
        • Overview
        • get
        • list
      • User
        • Overview
        • create
        • delete
        • get
        • grantPermission
        • list
        • revokePermission
        • update
      • Versions
        • Overview
        • list
      • Operation
        • Overview
        • get
  • История изменений
  • Вопросы и ответы
    • Общие вопросы
    • Вопросы о ClickHouse
    • Подключение
    • Изменение кластера
    • Настройки параметров кластера
    • Перемещение и восстановление кластера
    • Мониторинг и логи
    • Все вопросы на одной странице
  1. Пошаговые инструкции
  2. Управление моделями машинного обучения

Управление моделями машинного обучения

Статья создана
Yandex Cloud
  • Перед подключением модели
  • Получить список моделей в кластере
  • Получить детальную информацию о модели
  • Подключить модель
  • Применить модель
  • Изменить модель
  • Отключить модель
  • Пример

Managed Service for ClickHouse позволяет анализировать данные с помощью моделей машинного обучения CatBoost без использования дополнительных инструментов. Чтобы применить модель, подключите ее к кластеру и вызовите в SQL-запросе с помощью встроенной функции modelEvaluate(). В результате выполнения такого запроса вы получите предсказания модели для каждой строки входных данных. Подробнее о машинном обучении в ClickHouse читайте в документации.

Перед подключением модели

Managed Service for ClickHouse работает только с моделями, которые загружены в Yandex Object Storage и к которым предоставлен доступ на чтение:

  1. Загрузите файл обученной модели в Yandex Object Storage.

  2. Настройте доступ к файлу модели одним из способов:

    • Используйте сервисный аккаунт (рекомендуется). Данный способ позволяет получить доступ к файлу без ввода учетных данных.

      1. Подключите сервисный аккаунт к кластеру.
      2. Назначьте аккаунту роль storage.viewer.
      3. В ACL бакета добавьте аккаунту разрешение READ.

    • Включите публичный доступ к бакету с файлом.

  3. Получите ссылку на файл модели.

Получить список моделей в кластере

Консоль управления
CLI
API
  1. В консоли управления перейдите на страницу каталога и выберите сервис Managed Service for ClickHouse.
  2. Нажмите на имя нужного кластера и выберите вкладку Машинное обучение на панели слева.

Если у вас еще нет интерфейса командной строки Yandex Cloud, установите и инициализируйте его.

По умолчанию используется каталог, указанный в профиле CLI. Вы можете указать другой каталог с помощью параметра --folder-name или --folder-id.

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

yc managed-clickhouse ml-model list --cluster-name=<имя кластера>

Имя кластера можно запросить со списком кластеров в каталоге.

Воспользуйтесь методом API list и передайте идентификатор кластера в параметре clusterId запроса.

Идентификатор кластера можно получить со списком кластеров в каталоге.

Получить детальную информацию о модели

Консоль управления
CLI
API
  1. В консоли управления перейдите на страницу каталога и выберите сервис Managed Service for ClickHouse.
  2. Нажмите на имя нужного кластера и выберите вкладку Машинное обучение на панели слева.

Если у вас еще нет интерфейса командной строки Yandex Cloud, установите и инициализируйте его.

По умолчанию используется каталог, указанный в профиле CLI. Вы можете указать другой каталог с помощью параметра --folder-name или --folder-id.

Чтобы получить детальную информацию о модели, выполните команду:

yc managed-clickhouse ml-model get <имя модели> \
  --cluster-name=<имя кластера>

Имя модели можно запросить со списком моделей в кластере, имя кластера — со списком кластеров в каталоге.

Воспользуйтесь методом API get и передайте в запросе:

  • Идентификатор кластера в параметре clusterId.
  • Имя модели в параметре mlModelName.

Имя модели можно запросить со списком моделей в кластере, имя кластера — со списком кластеров в каталоге.

Подключить модель

Примечание

Поддерживаются только модели типа CatBoost: ML_MODEL_TYPE_CATBOOST.

Консоль управления
CLI
Terraform
API
  1. Выберите кластер:

    1. В консоли управления перейдите на страницу каталога и выберите сервис Managed Service for ClickHouse.
    2. Нажмите на имя нужного кластера и выберите вкладку Машинное обучение на панели слева.
    3. Нажмите Добавить модель.
  2. Настройте параметры модели:

    • Тип — ML_MODEL_TYPE_CATBOOST.
    • Имя — имя модели. Имя модели — один из аргументов функции modelEvaluate(), которая нужна для вызова модели в ClickHouse.
    • URL — адрес модели в Yandex Object Storage.
  3. Нажмите Добавить и дождитесь окончания добавления модели.

Если у вас еще нет интерфейса командной строки Yandex Cloud, установите и инициализируйте его.

По умолчанию используется каталог, указанный в профиле CLI. Вы можете указать другой каталог с помощью параметра --folder-name или --folder-id.

Чтобы подключить модель к кластеру, выполните команду:

yc managed-clickhouse ml-model create <имя модели> \
  --cluster-name=<имя кластера> \
  --type=ML_MODEL_TYPE_CATBOOST \
  --uri=<ссылка на файл модели в Yandex Object Storage>

Имя кластера можно запросить со списком кластеров в каталоге.

  1. Откройте актуальный конфигурационный файл Terraform с планом инфраструктуры.

    О том, как создать такой файл, см. в разделе Создание ClickHouse-кластера.

  2. Добавьте к описанию кластера Managed Service for ClickHouse блок ml_model с описанием подключаемой модели машинного обучения:

    resource "yandex_mdb_clickhouse_cluster" "<имя кластера>" {
      ...
      ml_model {
        name = "<имя модели>"
        type = "ML_MODEL_TYPE_CATBOOST"
        uri  = "<ссылка на файл модели в Yandex Object Storage>"
      }
    }
    
  3. Проверьте корректность настроек.

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

    2. Выполните команду:

      terraform validate
      

      Если в файлах конфигурации есть ошибки, Terraform на них укажет.

  4. Подтвердите изменение ресурсов.

    1. Выполните команду для просмотра планируемых изменений:

      terraform plan
      

      Если конфигурации ресурсов описаны верно, в терминале отобразится список изменяемых ресурсов и их параметров. Это проверочный этап: ресурсы не будут изменены.

    2. Если вас устраивают планируемые изменения, внесите их:

      1. Выполните команду:

        terraform apply
        
      2. Подтвердите изменение ресурсов.

      3. Дождитесь завершения операции.

Подробнее см. в документации провайдера Terraform.

Ограничения по времени

Провайдер Terraform ограничивает время на выполнение операций с кластером Managed Service for ClickHouse:

  • создание, в т. ч. путем восстановления из резервной копии, — 60 минут;
  • изменение — 90 минут;
  • удаление — 30 минут.

Операции, длящиеся дольше указанного времени, прерываются.

Как изменить эти ограничения?

Добавьте к описанию кластера блок timeouts, например:

resource "yandex_mdb_clickhouse_cluster" "<имя кластера>" {
  ...
  timeouts {
    create = "1h30m" # Полтора часа
    update = "2h"    # 2 часа
    delete = "30m"   # 30 минут
  }
}

Воспользуйтесь методом API create и передайте в запросе:

  • Идентификатор кластера в параметре clusterId.
  • Имя модели в параметре mlModelName.
  • Тип модели ML_MODEL_TYPE_CATBOOST в параметре type.
  • Cсылку на файл модели в Yandex Object Storage в параметре uri.

Идентификатор кластера можно запросить со списком кластеров в каталоге.

Применить модель

Чтобы применить модель к данным, которые хранятся в кластере ClickHouse:

  1. Подключитесь к кластеру с помощью клиента ClickHouse CLI или перейдите на вкладку SQL в консоли управления кластером.

  2. Выполните SQL-запрос вида:

    SELECT 
        modelEvaluate('<имя модели>', 
                      <имя столбца 1>,
                      <имя столбца 2>,
                      ...
                      <имя столбца N>)
    FROM <имя таблицы>
    

В качестве аргументов функции modelEvaluate() укажите имя модели и имена столбцов, содержащих входные данные. В результате выполнения запроса вы получите столбец с предсказаниями модели для каждой строки исходной таблицы.

Изменить модель

Managed Service for ClickHouse не отслеживает изменения в файле с моделью, который находится в бакете Yandex Object Storage.

Чтобы актуализировать содержимое модели, которая уже подключена к кластеру:

  1. Загрузите файл с актуальной моделью в Yandex Object Storage.
  2. Получите ссылку на этот файл.
  3. Измените параметры модели, подключенной к Managed Service for ClickHouse, передав новую ссылку на файл с моделью.
Консоль управления
CLI
Terraform
API
  1. В консоли управления перейдите на страницу каталога и выберите сервис Managed Service for ClickHouse.
  2. Нажмите на имя нужного кластера и выберите вкладку Машинное обучение на панели слева.
  3. Выберите нужную модель, нажмите на значок и выберите пункт Изменить.

Если у вас еще нет интерфейса командной строки Yandex Cloud, установите и инициализируйте его.

По умолчанию используется каталог, указанный в профиле CLI. Вы можете указать другой каталог с помощью параметра --folder-name или --folder-id.

Чтобы изменить ссылку на файл с моделью в бакете Yandex Object Storage, выполните команду:

yc managed-clickhouse ml-model update <имя модели> \
  --cluster-name=<имя кластера> \
  --uri=<новая ссылка на файл в Yandex Object Storage>

Имя модели можно запросить со списком моделей в кластере, имя кластера — со списком кластеров в каталоге.

  1. Откройте актуальный конфигурационный файл Terraform с планом инфраструктуры.

    О том, как создать такой файл, см. в разделе Создание ClickHouse-кластера.

  2. Измените в описании кластера Managed Service for ClickHouse значение параметра uri в блоке ml_model:

    resource "yandex_mdb_clickhouse_cluster" "<имя кластера>" {
    ...
      ml_model {
        name = "<имя модели>"
        type = "ML_MODEL_TYPE_CATBOOST"
        uri  = "<новая ссылка на файл модели в Yandex Object Storage>"
      }
    }
    
  3. Проверьте корректность настроек.

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

    2. Выполните команду:

      terraform validate
      

      Если в файлах конфигурации есть ошибки, Terraform на них укажет.

  4. Подтвердите изменение ресурсов.

    1. Выполните команду для просмотра планируемых изменений:

      terraform plan
      

      Если конфигурации ресурсов описаны верно, в терминале отобразится список изменяемых ресурсов и их параметров. Это проверочный этап: ресурсы не будут изменены.

    2. Если вас устраивают планируемые изменения, внесите их:

      1. Выполните команду:

        terraform apply
        
      2. Подтвердите изменение ресурсов.

      3. Дождитесь завершения операции.

Подробнее см. в документации провайдера Terraform.

Ограничения по времени

Провайдер Terraform ограничивает время на выполнение операций с кластером Managed Service for ClickHouse:

  • создание, в т. ч. путем восстановления из резервной копии, — 60 минут;
  • изменение — 90 минут;
  • удаление — 30 минут.

Операции, длящиеся дольше указанного времени, прерываются.

Как изменить эти ограничения?

Добавьте к описанию кластера блок timeouts, например:

resource "yandex_mdb_clickhouse_cluster" "<имя кластера>" {
  ...
  timeouts {
    create = "1h30m" # Полтора часа
    update = "2h"    # 2 часа
    delete = "30m"   # 30 минут
  }
}

Воспользуйтесь методом API update и передайте в запросе:

  • Идентификатор кластера в параметре clusterId.
  • Имя модели в параметре mlModelName.
  • Новую ссылку на файл модели в Yandex Object Storage в параметре uri.
  • Список полей конфигурации кластера, подлежащих изменению, в параметре updateMask.

Идентификатор кластера можно запросить со списком кластеров в каталоге, имя модели — со списком моделей в кластере.

Важно

Этот метод API сбросит все параметры изменяемого объекта, которые не были явно переданы в запросе, на значения по умолчанию. Чтобы избежать этого, перечислите настройки, которые вы хотите изменить, в параметре updateMask (одной строкой через запятую).

Отключить модель

Примечание

После отключения модели соответствующий объект остается в бакете Yandex Object Storage. Если этот объект модели больше не нужен, его можно удалить.

Консоль управления
CLI
Terraform
API
  1. В консоли управления перейдите на страницу каталога и выберите сервис Managed Service for ClickHouse.
  2. Нажмите на имя нужного кластера и выберите вкладку Машинное обучение на панели слева.
  3. Выберите нужную модель, нажмите на значок и выберите пункт Удалить.

Если у вас еще нет интерфейса командной строки Yandex Cloud, установите и инициализируйте его.

По умолчанию используется каталог, указанный в профиле CLI. Вы можете указать другой каталог с помощью параметра --folder-name или --folder-id.

Чтобы отключить модель, выполните команду:

yc managed-clickhouse ml-model delete <имя модели> \
  --cluster-name=<имя кластера>

Имя модели можно запросить со списком моделей в кластере, имя кластера — со списком кластеров в каталоге.

  1. Откройте актуальный конфигурационный файл Terraform с планом инфраструктуры.

    О том, как создать такой файл, см. в разделе Создание ClickHouse-кластера.

  2. Удалите из описания кластера Managed Service for ClickHouse блок описания нужной модели ml_model.

  3. Проверьте корректность настроек.

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

    2. Выполните команду:

      terraform validate
      

      Если в файлах конфигурации есть ошибки, Terraform на них укажет.

  4. Подтвердите изменение ресурсов.

    1. Выполните команду для просмотра планируемых изменений:

      terraform plan
      

      Если конфигурации ресурсов описаны верно, в терминале отобразится список изменяемых ресурсов и их параметров. Это проверочный этап: ресурсы не будут изменены.

    2. Если вас устраивают планируемые изменения, внесите их:

      1. Выполните команду:

        terraform apply
        
      2. Подтвердите изменение ресурсов.

      3. Дождитесь завершения операции.

Подробнее см. в документации провайдера Terraform.

Ограничения по времени

Провайдер Terraform ограничивает время на выполнение операций с кластером Managed Service for ClickHouse:

  • создание, в т. ч. путем восстановления из резервной копии, — 60 минут;
  • изменение — 90 минут;
  • удаление — 30 минут.

Операции, длящиеся дольше указанного времени, прерываются.

Как изменить эти ограничения?

Добавьте к описанию кластера блок timeouts, например:

resource "yandex_mdb_clickhouse_cluster" "<имя кластера>" {
  ...
  timeouts {
    create = "1h30m" # Полтора часа
    update = "2h"    # 2 часа
    delete = "30m"   # 30 минут
  }
}

Воспользуйтесь методом API delete и передайте в запросе:

  • Идентификатор кластера в параметре clusterId.
  • Имя модели в параметре mlModelName.

Идентификатор кластера можно запросить со списком кластеров в каталоге, имя модели — со списком моделей в кластере.

Пример

Если у вас еще нет подходящего набора данных и модели для его обработки, вы можете протестировать машинное обучение в Managed Service for ClickHouse на этом примере. Для него мы подготовили файл с данными и обучили модель для их анализа. Вы сможете загрузить данные в ClickHouse и посмотреть на предсказания модели для разных строк таблицы.

Примечание

Для этого примера мы будем использовать открытые данные из Amazon Employee Access Challenge. Модель обучена предсказывать значение столбца ACTION. Те же данные и модель используются в примерах в документации ClickHouse и на GitHub.

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

  1. Установите ClickHouse CLI и настройте подключение к кластеру как описано в документации.

  2. Скачайте файл с данными для анализа:

    wget https://storage.yandexcloud.net/managed-clickhouse/train.csv
    
  3. Создайте таблицу для данных:

    clickhouse-client --host <FQDN хоста> \
                      --database <имя базы данных>
                      --secure \
                      --user <имя пользователя БД> \
                      --password <пароль пользователя БД> \
                      --port 9440 \
                      -q 'CREATE TABLE ml_test_table (date Date MATERIALIZED today(), ACTION UInt8, RESOURCE UInt32, MGR_ID UInt32, ROLE_ROLLUP_1 UInt32, ROLE_ROLLUP_2 UInt32, ROLE_DEPTNAME UInt32, ROLE_TITLE UInt32, ROLE_FAMILY_DESC UInt32, ROLE_FAMILY UInt32, ROLE_CODE UInt32) ENGINE = MergeTree() PARTITION BY date ORDER BY date'
    
  4. Загрузите данные в таблицу:

    clickhouse-client --host <FQDN хоста> \
                      --database <имя базы данных>
                      --secure \
                      --user <имя пользователя БД> \
                      --password <пароль пользователя БД> \
                      --port 9440 \
                      -q 'INSERT INTO ml_test_table FORMAT CSVWithNames' \
                      < train.csv
    
  5. В консоли управления подключите тестовую модель:

    • Тип — ML_MODEL_TYPE_CATBOOST.
    • Имя — ml_test.
    • URL — https://storage.yandexcloud.net/managed-clickhouse/catboost_model.bin.
  6. Протестируйте модель:

    1. Подключитесь к кластеру с помощью клиента ClickHouse CLI или перейдите на вкладку SQL в консоли управления кластером.
    2. Проверьте работу модели с помощью запросов:
      • Предсказания значения столбца ACTION для первых 10 строк таблицы:

        SELECT
            modelEvaluate('ml_test',
                          RESOURCE,
                          MGR_ID,
                          ROLE_ROLLUP_1,
                          ROLE_ROLLUP_2,
                          ROLE_DEPTNAME,
                          ROLE_TITLE,
                          ROLE_FAMILY_DESC,
                          ROLE_FAMILY,
                          ROLE_CODE) > 0 AS prediction,
            ACTION AS target
        FROM ml_test_table
        LIMIT 10
        
      • Предсказанная вероятность для первых 10 строк таблицы:

        SELECT
            modelEvaluate('ml_test',
                          RESOURCE,
                          MGR_ID,
                          ROLE_ROLLUP_1,
                          ROLE_ROLLUP_2,
                          ROLE_DEPTNAME,
                          ROLE_TITLE,
                          ROLE_FAMILY_DESC,
                          ROLE_FAMILY,
                          ROLE_CODE) AS prediction,
            1. / (1 + exp(-prediction)) AS probability,
            ACTION AS target
        FROM ml_test_table
        LIMIT 10
        

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

Language / Region
© 2022 ООО «Яндекс.Облако»
В этой статье:
  • Перед подключением модели
  • Получить список моделей в кластере
  • Получить детальную информацию о модели
  • Подключить модель
  • Применить модель
  • Изменить модель
  • Отключить модель
  • Пример