В XaiPient мы разрабатываем различные инструменты для извлечения удобных для человека идей из обученных моделей машинного обучения. Сегодня мы рады представить некоторые из наших инструментов объяснения моделей через REST API, которые мы делаем доступными в частной бета-версии. Чтобы упростить работу с этим API, мы выпускаем Клиент API XaiPient (xac), который представляет собой (устанавливаемый с помощью pip) интерфейс командной строки (CLI) на основе Python и библиотеку Python для взаимодействия с сервером объяснения XaiPient. Интерфейс командной строки можно использовать для взаимодействия с API из командной строки в терминале, тогда как библиотеку Python можно использовать в сценариях Python или Jupyter и аналогичных записных книжках.

Почему вам может понадобиться API

Мы предполагаем два широких класса использования этого API для разработчиков:

  • Инженеры машинного обучения или специалисты по данным могут отлаживать, проверять и улучшать свои модели во время разработки моделей, а также отслеживать развернутые в производственной среде модели.
  • Разработчики могут использовать API для интеграции объяснений во внутренние или внешние бизнес-приложения, информационные панели, рабочие процессы или отчеты (например, для потребителей или регулирующих органов).

Бизнес-преимущества наших понятных для человека объяснений включают: (а) снижение нормативного риска, (б) повышение доверия клиентов, (в) практические идеи для улучшения бизнес-операций (например, какие факторы следует скорректировать для сокращения оттока) и (г) позволяя экспертам в предметной области легко проверять и проверять модели, тем самым улучшая принятие модели и повышая доверие к ней.

Что предлагает API в настоящее время

Наш надежный стек сервера API объяснимости использует лучшие в своем классе технологии, включая сервер FastAPI, сервер GraphQL, сервер очереди заданий с поддержкой Redis и специально созданные библиотеки объяснимости.

В настоящее время API поддерживает модели бинарной классификации для табличных наборов данных. Позднее мы добавим поддержку моделей непрерывного вывода, временных рядов, последовательностей и текстовых моделей. Мы поддерживаем модели в различных фреймворках (Tensorflow, Pytorch, Keras, XGBoost, LightGBM) и планируем добавлять больше в зависимости от спроса.

Для данной модели M и тестового набора данных D API предоставляет несколько типов объяснений (подробнее в документации):

  • Важность глобальных функций: среднее абсолютное значение атрибуции функций по набору данных D.
  • Выравнивание глобальных объектов: это измерение для каждого объекта в среднем по набору данных D, насколько хорошо выровнен его вклад по отношению к истинной цели.
  • Глобальные правила: определяет кластеры в D, где классификации модели могут быть описаны с помощью простого приблизительного правила принятия решения (например, если у заявителя коэффициент долга ›5 и просроченные платежи› 2, то классифицируйте как Плохой Кредит).
  • Локальные атрибуты: для определенной строки в D (или данного вектора признаков) вклад каждой функции в прогноз вероятности модели.
  • Локальные правила: обоснование прогноза модели для определенной строки в D (или заданного вектора признаков) в форме простого приближенного правила принятия решения, которому удовлетворяют точки D в окрестности данного случая.
  • Противодействие: для данного вектора признаков (или строки D), случай с минимальными изменениями признаков, которые модель классифицирует по-разному. Это может служить контрастным объяснением или предоставить действенную информацию для бизнеса или потребителя (например, какие изменения могут снизить риск или повысить мои шансы на принятие кредита?).

Для максимальной гибкости интеграции вызовы API возвращают строки JSON, но доступны более структурированные формы (например, фреймы данных Pandas или словари). Для визуально привлекательной и удобной для бизнеса рендеринга наших объяснений мы разработали вспомогательную библиотеку для облегчения создания приложений Streamlit с использованием нашего API, и мы рады поделиться этим с заинтересованными разработчиками.

Как интегрироваться с вашими системами и рабочим процессом

В то время как базовый API представляет собой облачный REST API для предприятий, которые заботятся о безопасности данных, наш сервер API может быть легко развернут в локальном кластере Kubernetes или на ваша гибридная облачная среда. Свяжитесь с нами, чтобы обсудить ваши конкретные требования.

Пример использования клиента Python API

Тем, кому не терпится погрузиться в детали, лучше всего перейти к нашей документации, особенно к Быстрому началу работы с Python, и проверить опубликованную нами Блокнот Deepnote с рабочим обзором. Здесь мы вкратце расскажем о том, что входит в использование клиента Python.

Сначала установите пакет xac, следуя инструкциям в документации. Затем инициализируйте объект Explainer, используя полученный от нас логин, а также пути к вашей модели, набору данных и необязательному преобразователю столбцов. Преобразователь столбцов инкапсулирует способ кодирования исходных данных (например, однократное кодирование категориальных функций или стандартизация числовых функций) в форму, подходящую для передачи в качестве входных данных в модель. Это позволяет нам предоставлять объяснения в терминах исходных функций, которые более удобны для человека (в отличие от многих существующих инструментов объяснимости, которые производят объяснения в кодированном пространстве).

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

Теперь объект объяснения ex готов для запроса объяснений с использованием различных get_* методов, например:

Например, глобальный объект важности gi - это строка JSON, которую мы можем рассматривать как dict Python:

За кулисами вызов get_* метода отправляет задание объяснения , и ожидает его завершения. Если на вычисление объяснения уходит много времени, это означает, что последовательность get_* вызовов может быть несколько медленной. Чтобы облегчить это, мы предоставляем отдельную отправку задания и ожидание, используя понятие объекта обещания. Вместо метода get_* мы отправляем запрос с помощью метода ask_*, который немедленно возвращает объект обещания без ожидания, а затем мы можем запросить объект обещания с помощью вызова get():

Мы хотели бы услышать от вас

Мы надеемся, что этот пост дал вам хорошее представление о почему, что и как о нашем API. Если вы хотите попробовать его, присоединяйтесь к списку ожидания частного бета-тестирования. Мы будем рады услышать о том, как вы собираетесь использовать API, и любые отзывы, которые вы можете получить!