Создание успешной корпоративной платформы искусственного интеллекта
Вступление
В 2016 году я начал работать начинающим инженером-программистом в небольшом стартапе под названием «MetaMind», который был куплен Salesforce. С тех пор я прошел долгий путь и многого добился со своей небольшой командой. Я – член команды Einstein Vision и Language Platform. Наша платформа предоставляет клиентам возможность загружать и обучать их системы на наборах данных (изображения или текст) для создания моделей, которые можно использовать для получения информации в реальном времени. Мы обслуживаем внутренние группы Salesforce, работающие над Service Cloud, Marketing Cloud и Industries Cloud, а также внешних клиентов и разработчиков.
Если вы когда-либо взаимодействовали с чат-ботом в интернет магазине одежды, финансовом, или медицинском учреждении или даже государственном учреждении, то, вероятно, ваш запрос обработала наша платформа. Она должна была понять вопрос и дать ответ. Например, клиенты Sun Basket могут отслеживать заказы или посылки, сообщать о любых проблемах, связанных с задержками или повреждениями, а также получать кредит или возмещение. AdventHealth может предоставить пациентам интерактивную оценку COVID-19 CDC и рассказывать им о болезни.
Меня часто спрашивают об опыте создания платформы искусственного интеллекта с нуля и о том, что нужно для ее успешного запуска, и это мы опишем в данной статье.
Пользовательский опыт
Понимайте вашего клиента | Сквозной пользовательский опыт
Пользовательский опыт – ключ к успеху. Наши целевые пользователи – разработчики и менеджеры продукта. Мы предоставляем общедоступный API для взаимодействия с нашей платформой. В качестве команды менеджеров по продукту и разработчиков можно легко представить себе другого разработчика или менеджера продукта, использующего API для загрузки tar-файла с изображениями. Но проблема, с которой мы столкнулись, заключалась в том, что не все наши пользователи на этих позициях знакомы с глубоким или машинным обучением.
Нам пришлось обучать наших пользователей, отвечая на вопросы, вроде: Что такое набор данных? Зачем вам нужен набор данных? Что такое классы в наборе данных? Сколько образцов нам нужно в наборе данных? Что означает обучение на наборе данных? Что такое модель? Как использовать модель? И это еще не все. в некоторых случаях нас даже спрашивали: «Что такое машинное обучение и зачем оно мне?»
Мы потратили много времени на изучение нашего клиента. Мы провели несколько собственных A/B-тестов и открыли свою платформу для небольшого количества пилотных клиентов. Мы также проводили семинары и практические занятия, чтобы познакомить клиентов с процессом обучения моделей, проблемами с качеством и количеством данных, точностью прогнозов и т. д. В конечном итоге мы поняли, что, исходя из уровня понимания и опыта работы с машинным обучением, с которым мы столкнулись, нам нужно несколько каналов для подключения пользователей к нашей платформе. Итак, мы представили поддержку Einstein. Эта страница покажет вам соответствующие ресурсы для работы с Einstein Vision и Language Platform.
Для начинающих пользователей, которые могут быть не знакомы с концепциями машинного обучения, такими как набор данных, обучение и прогнозирование, мы предлагаем пошаговые инструкции по самообслуживанию через Trailhead. Одно из моих любимых руководств – «Путешествие в глубокое обучение».
Чтобы упростить начало работы, мы также создали Einstein Vision и Language Model Builder. Это – пакет AppExchange, который предоставляет пользовательский интерфейс для API-интерфейсов Einstein Vision и Language и позволяет клиентам быстро обучать модели и начинать их использовать.
Руководство по предложениям Einstein Vision и Language Platform
Для пользователя, который является разработчиком и хочет разобраться в коде, у нас есть фрагменты кода, которые показывают использование API – например, загрузку наборов данных на разных языках и в разных средах. Для менеджера продукта у нас есть документация по API с фрагментами команд c URL для выполнения вызовов API.
curl -X POST \ -H "Authorization: Bearer <TOKEN>" \ -H "Cache-Control: no-cache" \ -H "Content-Type: multipart/form-data" \ -F "type=image" \ -F "path=https://einstein.ai/images/mountainvsbeach.zip" \ https://api.einstein.ai/v2/vision/datasets/upload/sync
Кроме того, мы создали сообщество разработчиков с форумами и блогами. Приятно видеть подобный пост в блоге разработчиков.
Чтобы еще больше улучшить взаимодействие с пользователем и быстро оценить возможности нашей платформы, мы ввели готовые модели. Эти модели созданы нашей командой и доступны всем клиентам. Пользователи могут зарегистрироваться и быстро сделать прогноз. В течение нескольких минут пользователь получает представление о ценности, которую может предоставить платформа.
Кроме того, хочу упомянуть, что мы одержимы качеством нашего API и строго соблюдаем процедуры внесения изменений и выпусков API. Обратная совместимость – это всегда горячо обсуждаемая тема в команде.
Команда
Доменная экспертиза | Техническая экспертиза
Отличные команды создают отличные продукты, и платформа искусственного интеллекта – не исключение. На мой взгляд, есть четыре столпа-команды, на которых успешно строится платформа ИИ: продукт, наука о данных, инженерия и инфраструктура. У каждой из этих команд есть свой устав. Но важно, чтобы каждая команда имела как знания в предметной области, так и технические знания.
Знания в предметной области необходимы для понимания целевого рынка, ценности бизнеса, сценариев использования и того, как заказчик использует ИИ в своих бизнес-процессах. Технические знания включают понимание важности данных и качества данных, того, как модели обучаются и обслуживаются, а также инфраструктуры, которая является основой платформы. Если все заинтересованные стороны не понимают эти проблемы достаточно глубоко, будет трудно вести переговоры о решениях для рассмотрения вариантов использования клиентами.
Специалисты по обработке данных сосредоточены на проведении исследований и экспериментов, создании моделей и расширении границ точности моделей. Инженеры сосредоточены на создании систем промышленного уровня. Но отправить модель из исследования в производство – нетривиальная задача. Чем больше каждая команда знает о продукте, и о его технических аспектах, тем эффективнее команда и тем лучшие решения они создают.
Например, в сеансе чат-бота в реальном времени пользователь ожидает мгновенного ответа. Модель может быть очень точной в своих прогнозах, но эти прогнозы теряют ценность, если они не могут быть предоставлены конечному пользователю в течение определенного периода времени. Для сравнения: у нас есть тысячи клиентов, которые одновременно обучают свои собственные модели и используют их в реальном времени. Наши клиенты ожидают, что после обучения их модели она станет доступной для использования и будет выполнять прогнозы в течение сотен миллисекунд.
Требуется создать платформу, которая может поддерживать такие требования с участием людей, которые могут понимать архитектуры моделей, их функциональные и вычислительные требования, знать, как использовать эти модели для обслуживания запросов клиентов и, в конечном итоге, создавать их для получения ответов, на основе которых клиенты могут строить бизнес-логику и реализовать ценность. Это требует от специалистов по обработке данных, инженеров по программному обеспечению, инженеров по инфраструктуре и менеджеров по продуктам тесного сотрудничества для обеспечения непрерывного взаимодействия с пользователем.
Процесс
Коммуникация | Сотрудничество
Нашей команде потребовалось несколько итераций, чтобы мы нашли способ как можно беспрепятственно работать вместе. Активное сотрудничество между всеми заинтересованными сторонами – группой прикладных исследований и обработки данных, командой разработчиков платформ и инфраструктуры, а также командой разработчиков продукта – должно начинаться с первого этапа определения требований к доставке решения в производство.
Эффективный процесс общения и сотрудничества снижает трение между кросс-функциональными командами, создает подотчетность, повышает производительность, способствует обмену идеями и стимулирует инновации.
После итераций по разным графикам ежедневных обновлений, еженедельных совещаний по синхронизации, демок спринтов и ретроспектив мы в конечном итоге пришли к эффективному, сквозному процессу сотрудничества в области науки и техники, который вы можете увидеть на следующей временной шкале.
График и процесс совместной работы кросс-функциональной команды
Это – общий взгляд на процесс нашего сотрудничества. Идея состоит в том, что каждый вариант использования предполагает активное сотрудничество между заинтересованными сторонами из нескольких команд, начиная с самого начала.
Специалисты/исследователи данных, инженеры и менеджеры по продуктам работают вместе, чтобы найти решения и предложить альтернативы.
Например, на этапе пиков параллельно работают несколько команд. Специалисты по обработке данных выясняют, какая архитектура нейронной сети лучше всего подходит для конкретного случая. Инженеры платформы работают над выявлением потенциальных изменений API, изменений, связанных с управлением данными, а также над настройкой систем обучения и прогнозирования. Инженеры инфраструктуры работают над определением требований к ресурсам: кластеры GPU/CPU, изменения конвейера CI/CD и т. д.
В рамках каждого этапа совместной работы мы создали единый способ отслеживания взаимодействия между этими кросс-функциональными командами и записи артефактов и решений по дизайну и архитектуре с помощью документов Quip.
Шаблоны документов Quip для записи артефактов проекта
На этом рисунке показан образец исходного документа проекта, который включает сводку по проекту и список представлений от разных команд и поддерживает записи всех связанных с проектом артефактов на протяжении всего процесса совместной работы.
Мы создали шаблоны для всех артефактов, чтобы команды могли просто заполнить эти детали. Использование шаблонов обеспечивает единообразие записи информации между командами и проектами.
Используя этот процесс, мы всего за две недели смогли отправить первую версию одной из наших первых моделей, оптического распознавания символов (OCR) от исследования до производства.
Гибкость – от исследований к производству
Cloud Agnostic | ML Framework Agnostic Cloud Agnostic | ML Framework Agnostic
Возможность повторять и поставлять новые функции – важный атрибут команды разработчиков платформы ИИ. Когда дело доходит до определения правильного решения для сценария использования ИИ, специалистам по данным и исследователям необходимо поэкспериментировать с наборами данных и нейронными сетями. Это включает в себя выполнение сеансов обучения модели с несколькими различными параметрами и различными методами извлечения функций и увеличения данных. Все эти операции требуют больших затрат времени и вычислительных ресурсов. Большинство экспериментов требуют для обучения дорогостоящих графических процессоров, и это может занять несколько часов (а иногда и дней), в зависимости от сложности задачи.
Общий вид рабочего процесса обучения и экспериментирования
Таким образом, нашим командам нужен был простой, последовательный, гибкий и независимый от фреймворка подход к экспериментам. А также налаженный конвейер для запуска функций и моделей в производство.
Наша платформа предоставляет среду для обучения и проведения экспериментов для исследователей и специалистов по обработке данных, чтобы быстро запускать эксперименты. Мы опубликовали обучающий SDK, в котором абстрагируются все компоненты уровня сервиса и инфраструктуры. SDK также предоставляет интерфейс для простого предоставления параметров обучения, извлечения наборов данных, метрик обучения push и публикации артефактов модели. Платформа также предоставляет API-интерфейсы для получения статуса учебных заданий, организации экспериментов и визуализации метаданных экспериментов.
Чтобы отправить модель в производство, группа специалистов по науке и исследованию данных использует установленный конвейер непрерывной интеграции (CI) для создания и упаковки кода обучения и обслуживания модели в виде образов Docker. Команда разработчиков платформы также предоставляет базовые образы Docker: Python, TensorFlow, PyTorch. Процесс CI публикует эти образы Docker в центральном репозитории.
Абстракция на основе gRPC для обслуживания моделей в производственной среде
Подобно обучающему SDK, наша служба прогнозирования действует как дополнительный компонент и взаимодействует с контейнером обслуживания/вывода модели, который публикует группа специалистов по науке и исследованию данных, используя стандартный контракт gRPC. Этот контракт gRPC абстрагируется от любых операций, связанных с предварительной/постобработкой и прогнозированием модели, и обеспечивает единообразный способ предоставления входных данных для модели и получения прогнозов в качестве выходных данных.
Затем группа специалистов по науке и исследованию данных может использовать API, предоставляемые платформой, для запуска новой версии этого обучения и модели, обслуживающей образы Docker в производственной среде. После запуска образов Docker клиенты могут обучать новые модели и использовать их для анализа.
Ключевой вывод здесь заключается в том, что наши платформенные сервисы не зависят от облака (мы работаем на Kubernetes) и от фреймворка машинного обучения. Если новый член команды знаком с интерфейсами Docker и API, он может работать продуктивно с первого дня. Это значительно сокращает время обучения использованию нашей платформы, позволяет быстро создавать прототипы и сокращает время производства.
Расширяемость и масштабируемость
Стандартное соглашение | Единообразие
Одним из самых больших уроков для нас как команды за последние несколько лет стала разработка платформы для обеспечения расширяемости и масштабируемости. Наша платформа претерпела несколько итераций улучшений. Изначально большинство наших сервисов были разработаны для конкретных случаев использования ИИ. Так что некоторые части казались жесткими, когда мы внедряли новые варианты использования.
Наша служба управления данными изначально была создана для обработки случаев использования классификации изображений и классификации текста. Естественно, все наши операции по загрузке и проверке, обновлению и выборке данных были настроены на эти два формата/схемы данных. Когда мы начали внедрять сценарии использования обнаружения изображений, оптического распознавания символов и распознавания именованных сущностей, мы поняли, что реализовывать конвейеры для конкретных наборов данных для выполнения этих операций избыточно и неэффективно. Было очевидно, что нам нужна система, не зависящая от типа набора данных, которая может обеспечить единообразный способ приема, поддержки и выборки наборов данных.
Мы создали новую систему управления данными, которая теперь позволяет нашей платформе поддерживать любые типы наборов данных (изображения, текст, аудио) и обеспечивать единый способ доступа к этим наборам данных. Идея состоит в том, чтобы поддерживать единый «виртуальный» набор данных, который представляет собой не что иное, как метаданные набора данных (количество примеров, набор поездов по сравнению с набором тестов, идентификаторы образцов) и предоставлять API-интерфейсы, которые обеспечивают простой и унифицированный интерфейс для доступа к данным независимо от типа.
Как упоминалось в разделе выше, наши службы обучения и прогнозирования обеспечивают абстракцию с использованием контрактов SDK и gRPC соответственно. Это позволяет платформе быть последовательной и единообразной независимо от типа платформы глубокого обучения, инструмента или требований к вычислениям. Наши услуги по обучению можно масштабировать по горизонтали, чтобы запускать несколько экспериментов и учебных занятий без необходимости решать проблемы, связанные с фреймворком или языком. И, аналогично, служба прогнозирования может легко внедрять новые модели, обслуживающие контейнеры, и получать от них прогнозы по контрактам gRPC, не зная о какой-либо предварительной/постобработке, зависящей от модели, и уровне нейронной сети.
Установление стандартного соглашения и абстрагирование низкоуровневых деталей для создания унифицированных интерфейсов позволило нашей платформе быть расширяемой и масштабируемой.
Доверие
Ориентация на безопасность | Этический ИИ
Наша ценность №1 в Salesforce – это доверие. Для нас доверие означает защиту данных наших клиентов. При создании любого продукта или функции мы руководствуемся принципом безопасности. Платформа распознавания образов и языка Einstein соответствует требованиям SOC-II и HIPAA.
Каждый фрагмент кода, который мы пишем, и каждая сторонняя библиотека или библиотека с открытым исходным кодом, которую мы используем, проходит сканирование на наличие угроз и уязвимостей. Мы активно сотрудничаем с группой по обеспечению безопасности продуктов и инфраструктуры, а также с юридической командой Salesforce, чтобы провести анализ функций, прежде чем мы отправим их в производство. Мы внедряем mTLS «от услуги к услуге», и это означает, что все данные клиентов, обрабатываемые нашими системами, передаются в зашифрованном виде. А чтобы обезопасить хранящиеся данные, мы шифруем тома хранилища.
Все клиенты, естественно, чувствительны к своим данным. Процессы безопасности, которым мы следуем, сыграли важную роль в завоевании доверия наших клиентов. Соответствие требованиям также означает, что мы можем работать в таких отраслях, в которых важны конфиденциальные данные, например, здравоохранение.
Наши исследовательские группы и группы по обработке данных следуют этическим принципам искусственного интеллекта, чтобы модели, которые мы строим, были ответственными, подотчетными, прозрачными, расширяющими возможности и инклюзивными.
Благодарности
Мы выражаем благодарность Шашанку Харинатху за ключевой вклад в создание процесса сотрудничества в области науки и инженерии данных, а также за то, что был честен в отношении наших систем и архитектуры, а также Дайанну Сиболду и Лауре Линдеман за их обзор и отзывы для улучшения этого поста. Кроме того, я хотел бы воспользоваться возможностью, чтобы упомянуть, что это был замечательный опыт работы с талантливыми людьми из команд Einstein Vision, Language Platform и Infra.
Пожалуйста, задавайте мне любые вопросы. Я хотел бы услышать ваши мысли по этой теме. Если вы заинтересованы в решении сложных проблем, связанных с глубоким обучением и платформой искусственного интеллекта, мы приглашаем вас.