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

Подключение моделей машинного обучения

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

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

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

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

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

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

  3. Получите публичную ссылку на модель.

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

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

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

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

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

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

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

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

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

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

    2. Выполните проверку с помощью команды:

      terraform plan
      

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

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

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

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

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

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

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

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

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

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

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

Пример

Если у вас еще нет подходящего набора данных и модели для его обработки, вы можете протестировать машинное обучение в 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.
  1. Протестируйте модель:
  2. Подключитесь к кластеру с помощью клиента ClickHouse CLI или перейдите на вкладку SQL в консоли управления кластером.
  3. Проверьте работу модели с помощью запросов:
    • Предсказания значения столбца 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
Вакансии
Политика конфиденциальности
Условия использования
Брендбук
© 2021 ООО «Яндекс.Облако»