Универсальный интерфейс AutoML на базе ЦП для решения широкого круга задач машинного обучения

Как мы представили в нашем предыдущем посте, ThirdAI — это стартап, посвященный демократизации искусственного интеллекта, позволяющий всем разработчикам обучать и развертывать крупномасштабные нейронные сети на обычном оборудовании ЦП. С помощью алгоритмических и программных инноваций мы стремимся на порядки снизить стоимость разработки современных решений для машинного обучения.

В этом посте мы рады представить новейшее предложение продукта ThirdAI: Universal Deep Transformers (UDT), интерфейс AutoML для решения широкого круга задач машинного обучения с помощью всего нескольких строк кода Python и без ручной настройки гиперпараметров. С помощью UDT любой разработчик или бизнес-организация могут приступить к работе с передовыми возможностями глубокого обучения на стандартной рабочей станции с процессором, не имея опыта машинного обучения.

В оставшейся части этого поста мы суммируем преимущества UDT и рассмотрим несколько вариантов использования, которые вы также можете попробовать в качестве ноутбуков Google Colab.

Возможности UDT

  1. Универсальный интерфейс.UDT может решать широкий спектр задач машинного обучения и модальностей данных, от обработки естественного языка до поиска, рекомендаций, анализа табличных данных, временных рядов, переформулирования текста и т. д. все через тот же API. Этот универсальный API упрощает рабочий процесс, особенно когда клиенты хотят применять UDT для решения множества бизнес-задач.
  2. Автоматическая настройка параметров.Проприетарные алгоритмы ThirdAI для обучения нейронных сетей и логических выводов основаны на многолетних исследованиях применения хеширования и вероятностных структур данных для машинного обучения. Эти инструменты, хотя и эффективны, включают в себя множество настраиваемых гиперпараметров, которые требуют значительного опыта в предметной области для правильной настройки для данного набора данных и рабочей нагрузки. Однако мы устранили это узкое место, разработав новые математические методы автоматического выбора оптимальных гиперпараметров, связанных с нашими алгоритмами. Как клиенту, вам нужно всего лишь вызвать интерфейс UDT в своем наборе данных, а затем сесть и расслабиться, зная, что технология ThirdAI выберет оптимальные гиперпараметры и выполнит проектирование функций автоматически без каких-либо дополнительных вычислительных затрат.
  3. Обучение в миллиардном масштабе. Благодаря инновациям в разработке программного обеспечения ThirdAI, а также большей пропускной способности памяти ЦП по сравнению с ГП, UDT может легко масштабироваться для наборов данных с миллиардами записей и экстремальных задач классификации с сотнями миллионов записей. выходных меток.
  4. Задержка логического вывода менее миллисекунды.Используя запатентованные алгоритмы разреженного логического вывода ThirdAI, UDT может достичь задержки логического вывода менее 1 мс на стандартных процессорах независимо от общего размера модели.
  5. Немедленная готовность к работе. Мы разработали UDT с упором на производственное развертывание. После обучения модели UDT клиенты могут немедленно сохранить сеть в сериализованном формате, который можно загружать в различных средах выполнения без дополнительных инженерных усилий.

Тематические исследования UDT

В этом разделе мы выделяем несколько практических вариантов использования UDT. Все эти примеры также доступны в виде блокнотов Google Colab. Мы рекомендуем вам запустить эти записные книжки и лично увидеть UDT в действии!

Прогнозирование доходов по переписи

Наш первый пример включает задачу классификации табличных данных. В частности, цель задачи Kaggle Census Income состоит в том, чтобы предсказать, превышает ли доход данного человека 50 000 долларов в год или нет. После загрузки набора табличных данных мы можем определить нашу модель UDT следующим образом:

from thirdai import bolt
from thirdai.demos import download_census_income

train_filename, test_filename, inference_batch = download_census_income()

model = bolt.UniversalDeepTransformer(
    data_types={
        "age": bolt.types.numerical(range=(17, 90)),
        "workclass": bolt.types.categorical(),
        "fnlwgt": bolt.types.numerical(range=(12285, 1484705)),
        "education": bolt.types.categorical(),
        "education-num": bolt.types.categorical(),
        "marital-status": bolt.types.categorical(),
        "occupation": bolt.types.categorical(),
        "relationship": bolt.types.categorical(),
        "race": bolt.types.categorical(),
        "sex": bolt.types.categorical(),
        "capital-gain": bolt.types.numerical(range=(0, 99999)),
        "capital-loss": bolt.types.numerical(range=(0, 4356)),
        "hours-per-week": bolt.types.numerical(range=(1, 99)),
        "native-country": bolt.types.categorical(),
        "label": bolt.types.categorical(),
    },
    target="label",
    n_target_classes=2,
)

И тогда мы можем обучать, оценивать, сохранять и загружать модель всего четырьмя строками кода. Обратите внимание, что помимо скорости обучения и количества эпох все остальные параметры обучения выбираются автоматически.

# Training the model
model.train(train_filename, epochs=5, learning_rate=0.01, metrics=["categorical_accuracy"])

# Evaluating the model
model.evaluate(test_filename, metrics=["categorical_accuracy"]);

# Saving
model.save("income_prediction.model")

# Loading
model = bolt.UniversalDeepTransformer.load("income_prediction.model")

Классификация намерений

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

from thirdai import bolt
from thirdai.demos import download_clinc_dataset

train_filename, test_filename, inference_batch = download_clinc_dataset()

model = bolt.UniversalDeepTransformer(
    data_types={
        "text": bolt.types.text(),
        "category": bolt.types.categorical(),
    },
    target="category",
    n_target_classes=150,
)

model.train(train_filename, epochs=5, learning_rate=0.01, metrics=["categorical_accuracy"])

model.evaluate(test_filename, metrics=["categorical_accuracy"]);

save_location = "intent_classification.model"

# Saving
model.save(save_location)

# Loading
model = bolt.UniversalDeepTransformer.load(save_location)

Переформулировка запроса

В нашем последнем примере мы рассмотрим проблему переформулировки запроса, которая является критической задачей для многих поисковых систем. Короче говоря, переформулировка запроса включает в себя переписывание никогда ранее не встречавшегося пользовательского запроса — например, с опечатками или нестандартными описаниями — в каноническую версию, для которой поисковая система уже кэшировала высококачественные результаты. Хотя эта задача сильно отличается от предыдущих задач обучения с учителем, которые мы рассмотрели в этом посте, интерфейс UDT остается практически идентичным.

from thirdai import bolt
from thirdai.demos import prepare_query_reformulation_data

import pandas

train_filename, test_filename, inference_batch = prepare_query_reformulation_data()


model = bolt.UniversalDeepTransformer(
    source_column="source_queries", target_column="target_queries", dataset_size="medium"
)

model.train(filename=train_filename)

query_reformulations = model.evaluate(filename=test_filename, top_k=5)

model_location = "query_reformulation.model"

# Saving
model.save(filename=model_location)

# Loading
model = bolt.UniversalDeepTransformer.load(model_location)

В будущих постах мы углубимся в детали этих различных приложений. На данный момент ключевым выводом является то, что мы можем решить множество разнообразных технических задач с помощью одного и того же интерфейса UDT.

Заключение

В этом посте мы представили последнее предложение продукта ThirdAI: Universal Deep Transformers (UDT). Благодаря UDT клиенты получают доступ к современному интерфейсу AutoML для машинного обучения, который эффективно работает на ЦП без необходимости утомительной ручной настройки параметров или знаний в области глубокого обучения. Мы рекомендуем вам попробовать UDT самостоятельно с помощью наших демонстрационных ноутбуков и посетить наш веб-сайт. Чтобы использовать UDT для нужд вашего бизнеса, свяжитесь с нами, запросив пробную лицензию на наше программное обеспечение.