bannerbanner
Искусственный интеллект от А до Б
Искусственный интеллект от А до Б

Полная версия

Искусственный интеллект от А до Б

Настройки чтения
Размер шрифта
Высота строк
Поля
На страницу:
11 из 15

При планировании продукта ИИ необходимо учитывать его задачу «последней мили». Первоначальный успех при использовании базовых моделей может ввести в заблуждение. Поскольку базовые возможности моделей фундаментов уже весьма впечатляют, создание увлекательной демонстрации может не занять много времени. Тем не менее, хорошая первоначальная демонстрация не обещает хорошего конечного продукта. На создание демонстрации могут уйти выходные, а на создание продукта уйдут месяцы и даже годы.

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

Многие изменения выглядят хорошо. Например, устраняются ограничения многих моделей. Длина контекста становится все длиннее. Выходные данные моделей становятся все лучше. Вывод моделей, процесс вычисления выходных данных с учетом входных данных, становится все быстрее и дешевле.

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

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

К некоторым изменениям адаптироваться сложнее, особенно к тем, которые связаны с регулированием. Технологии, связанные с ИИ, считаются вопросами национальной безопасности во многих странах, а это означает, что ресурсы для ИИ, включая вычислительные ресурсы, таланты и данные, строго регулируются. Например, введение Общего регламента по защите данных (GDPR) в Европе, по оценкам, обойдется компаниям в 9 миллиардов долларов для обеспечения соответствия. Доступность вычислительных ресурсов может измениться в одночасье, поскольку новые законы накладывают больше ограничений на то, кто может покупать и продавать вычислительные ресурсы (см. Указ президента США от октября 2023 г.). Если вашему поставщику графических процессоров внезапно запретили продавать графические процессоры в вашу страну, у вас проблемы. Некоторые изменения могут даже привести к летальному исходу. Например, регулирование интеллектуальной собственности (ИС) и использования ИИ все еще находится в стадии разработки. Если вы создадите свой продукт на основе модели, обученной с использованием данных других людей, можете ли вы быть уверены, что интеллектуальная собственность вашего продукта всегда будет принадлежать вам? Многие компании такие как игровые студии, не решаются использовать ИИ, опасаясь потерять свои IP-адреса в будущем.

После того, как вы решили создать продукт ИИ, давайте рассмотрим инженерный стек, необходимый для создания этих приложений.

Быстрый рост инженерии искусственного интеллекта также вызвал невероятный ажиотаж. Количество новых инструментов, методов, моделей и приложений, представляемых каждый день, может быть ошеломляющим. Вместо того, чтобы пытаться идти в ногу с постоянно меняющимся песком, давайте рассмотрим фундаментальные строительные блоки инженерии ИИ. Чтобы понять инженерию ИИ, важно признать, что инженерия ИИ развилась из инженерии машинного обучения. Когда компания начинает экспериментировать с базовыми моделями, вполне естественно, что ее существующая команда ML должна возглавить эту работу. Независимо от того, где в организациях расположены инженеры ИИ и инженеры машинного обучения, их роли в значительной степени пересекаются. Существующие инженеры машинного обучения могут добавить инженерию искусственного интеллекта в свои списки навыков, чтобы расширить свои перспективы трудоустройства. Однако есть и инженеры ИИ, у которых нет опыта работы с машинным обучением.

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

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

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

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

Чтобы понять, как развивался ландшафт с базовыми моделями, в марте 2024 года искали на GitHub все репозитории, связанные с искусственным интеллектом, с не менее чем 500 звездами. Учитывая распространенность GitHub, эти данные являются хорошим показателем для понимания экосистемы. В анализ также были включены репозитории для приложений и моделей, которые являются продуктами уровней разработки приложений и разработки моделей соответственно. Всего нашлось 920 репозиториев. Данные показывают большой скачок в количестве инструментов искусственного интеллекта в 2023 году после внедрения Stable Diffusion и ChatGPT. В 2023 году наибольший рост наблюдался в категориях приложений и разработки приложений. На инфраструктурном уровне наблюдался некоторый рост, но он был намного меньше, чем на других уровнях. Это ожидаемо. Несмотря на то, что модели и приложения изменились, основные потребности инфраструктуры – управление ресурсами, обслуживание, мониторинг и т. д. – остались прежними.

Это подводит нас к следующему пункту. Несмотря на беспрецедентный ажиотаж и творческий подход к базовым моделям, многие принципы создания приложений ИИ остаются прежними. Для корпоративных сценариев использования приложениям ИИ по-прежнему необходимо решать бизнес-задачи, и, следовательно, по-прежнему важно сопоставлять бизнес-метрики с метриками машинного обучения и наоборот. Вам все равно нужно проводить систематические эксперименты. В классической ML-инженерии вы экспериментируете с различными гиперпараметрами. С помощью базовых моделей вы экспериментируете с различными моделями, подсказками, алгоритмами извлечения, переменными выборки и многим другим. Мы по-прежнему хотим, чтобы модели работали быстрее и дешевле. По-прежнему важно настроить цикл обратной связи, чтобы мы могли итеративно улучшать наши приложения с помощью производственных данных. Это означает, что многое из того, что инженеры машинного обучения узнали и поделились за последнее десятилетие, по-прежнему применимо. Этот коллективный опыт облегчает всем начало создания приложений ИИ. Тем не менее, на основе этих непреходящих принципов построено множество инноваций, уникальных для инженерии ИИ, которые мы рассмотрим в этой книге.

Несмотря на то, что неизменные принципы развертывания приложений ИИ обнадеживают, также важно понимать, как все изменилось. Это полезно для команд, которые хотят адаптировать свои существующие платформы к новым сценариям использования ИИ, и разработчиков, которые заинтересованы в том, какие навыки нужно освоить, чтобы оставаться конкурентоспособными на новом рынке.

На высоком уровне создание приложений с использованием моделей фундаментов сегодня отличается от традиционного проектирования машинного обучения по трем основным параметрам:

1. Без базовых моделей вам придется обучать собственные модели для своих приложений. При проектировании ИИ вы используете модель, которую кто-то другой обучил за вас. Это означает, что инженерия ИИ меньше фокусируется на моделировании и обучении, а больше на адаптации моделей.

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

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

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

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

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

Разработка моделей – это уровень, который чаще всего ассоциируется с традиционной инженерией машинного обучения. У него есть три основные обязанности: моделирование и обучение, инженерия наборов данных и оптимизация вывода.

Моделирование и обучение. Моделирование и обучение – это процесс создания архитектуры модели, ее обучения и тонкой настройки. Примерами инструментов в этой категории являются TensorFlow от Google, Transformers от Hugging Face и PyTorch от Meta. Разработка моделей машинного обучения требует специальных знаний в области машинного обучения. Для этого необходимо знать различные типы алгоритмов машинного обучения (например, кластеризация, логистическая регрессия, деревья решений и коллаборативная фильтрация) и архитектуры нейронных сетей (например, с прямой связью, рекуррентные, сверточные и трансформеры). Это также требует понимания того, как модель обучается, включая такие понятия, как градиентный спуск, функция потерь, регуляризация и т.д.

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

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

Предварительное обучение относится к обучению модели с нуля – веса модели инициализируются случайным образом. Для LLM предварительное обучение часто включает в себя обучение модели для завершения текста. Из всех этапов обучения предварительная подготовка часто является наиболее ресурсоемкой. Для модели InstructGPT предварительное обучение занимает до 98 % от общего объема вычислительных ресурсов и ресурсов. Предварительная подготовка также занимает много времени. Небольшая ошибка во время предварительного обучения может повлечь за собой значительные финансовые потери и значительно отбросить проект назад. Из-за ресурсоемкого характера подготовки к тренировкам это стало искусством, которым занимаются лишь немногие. Тем не менее, те, у кого есть опыт предварительного обучения больших моделей, пользуются большим спросом.

Тонкая настройка означает продолжение обучения ранее обученной модели – веса модели получаются в процессе предыдущего обучения. Поскольку модель уже обладает определенными знаниями, полученными в ходе предварительного обучения, для тонкой настройки обычно требуется меньше ресурсов (например, данных и вычислений), чем для предварительного обучения.

Многие люди используют пост-тренинг для обозначения процесса обучения модели после этапа предварительного обучения. Концептуально, пост-тренинг и тонкая настройка – это одно и то же, и их можно использовать как взаимозаменяемые. Однако иногда люди могут использовать их по-разному для обозначения разных целей. Обычно это происходит после обучения, когда оно выполняется разработчиками моделей. Например, OpenAI может провести пост-обучение модели, чтобы она лучше следовала инструкциям перед выпуском. Это тонкая настройка, когда она выполняется разработчиками приложений. Например, вы можете точно настроить модель OpenAI (которая сама могла быть обучена после обучения), чтобы адаптировать ее к вашим потребностям.

Некоторые люди используют термин «обучение» для обозначения оперативного проектирования, что не совсем верно. Инженерия наборов данных – это курирование, генерация и аннотирование данных, необходимых для обучения и адаптации моделей ИИ. В традиционной инженерии машинного обучения большинство сценариев использования являются узконаправленными – выходные данные модели могут быть только среди предопределенных значений. Например, классификация спама только с двумя возможными выходами, "spam" и "not spam", является закрытой. Базовые модели, однако, являются открытыми. Аннотировать открытые запросы гораздо сложнее, чем аннотировать закрытые – легче определить, является ли электронное письмо спамом, чем написать эссе. Таким образом, аннотация данных представляет собой гораздо более сложную задачу для инженерии ИИ.

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

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

Оптимизация логических выводов означает более быстрое и дешевое моделирование. Оптимизация инференса всегда была важна для инженерии машинного обучения. Пользователи никогда не отказываются от более быстрых моделей, а компании всегда могут извлечь выгоду из более дешевого вывода. Однако по мере того, как базовые модели масштабируются и приводят к еще более высоким затратам на вывод и задержкам, оптимизация логических выводов становится еще более важной. Одна из проблем с базовыми моделями заключается в том, что они часто являются авторегрессионными – токены генерируются последовательно. Если модели требуется 10 мс для создания токена, то для генерации выходных данных в 100 токенов потребуется секунда, а для более длинных выходных данных потребуется еще больше. Поскольку пользователи становятся печально известны своей нетерпеливостью, снижение задержки приложений ИИ до 100 мс, ожидаемой для типичного интернет-приложения, является огромной проблемой. Оптимизация логических выводов стала активной подобластью как в промышленности, так и в академических кругах.

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

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

Существование такого большого количества методов адаптации также затрудняет оценку. Система, которая плохо работает с одним методом, может работать гораздо лучше с другим. Когда Google запустил Gemini в декабре 2023 года, они утверждали, что Gemini лучше, чем ChatGPT в бенчмарке MMLU. Компания Google оценила Gemini с помощью технологии быстрой инженерии под названием CoT@32. В этой методике Gemini было показано 32 примера, в то время как ChatGPT было показано только 5 примеров.

Оперативное проектирование заключается в том, чтобы заставить модели ИИ выражать желаемое поведение только на основе входных данных, не изменяя веса модели. В статье об оценке Gemini подчеркивается влияние оперативного проектирования на производительность модели. Используя другую технику оперативного проектирования, производительность Gemini Ultra на MMLU выросла с 83,7% до 90,04%. Можно заставить модель делать удивительные вещи с помощью одних только подсказок. Правильно подобранная инструкция позволяет получить модель для выполнения нужной вам задачи, в выбранном вами формате. Оперативное проектирование – это не просто указание модели, что делать. Речь также идет о том, чтобы дать модели необходимый контекст и инструменты для выполнения поставленной задачи. Для сложных задач с длинным контекстом также может потребоваться предоставить модели систему управления памятью, чтобы модель могла отслеживать свою историю.

Интерфейс ИИ означает создание интерфейса для взаимодействия конечных пользователей с вашими приложениями ИИ. До появления базовых моделей только организации, обладающие достаточными ресурсами для разработки моделей ИИ, могли разрабатывать приложения ИИ. Эти приложения часто встраивались в существующие продукты организаций. Например, обнаружение мошенничества было встроено в Stripe, Venmo и PayPal. Рекомендательные системы были частью социальных сетей и медиаприложений, таких как Netflix, TikTok и Spotify. С помощью базовых моделей каждый может создавать приложения ИИ. Вы можете обслуживать свои приложения ИИ как отдельные продукты или встраивать их в другие продукты, включая продукты, разработанные другими людьми. Например, ChatGPT и Perplexity являются автономными продуктами, в то время как Copilot от GitHub обычно используется в качестве плагина в VSCode, а Grammarly обычно используется в качестве расширения браузера для Google Docs. Midjourney можно использовать как через отдельное веб-приложение, так и через интеграцию в Discord.

Должны быть инструменты, которые предоставляют интерфейсы для автономных приложений ИИ или упрощают интеграцию ИИ в существующие продукты. Вот лишь некоторые из интерфейсов, которые набирают популярность для приложений ИИ: автономные веб-приложения, приложения для настольных компьютеров и мобильные приложения; расширения для браузера, которые позволяют пользователям быстро запрашивать модели ИИ во время просмотра; чат-боты интегрированы в приложения для чата, такие как Slack, Discord, WeChat и WhatsApp; многие продукты, включая VSCode, Shopify и Microsoft 365, предоставляют API, которые позволяют разработчикам интегрировать ИИ в свои продукты в виде подключаемых модулей и надстроек.

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

Повышенное внимание к разработке приложений, особенно интерфейсов, приближает разработку ИИ к полномасштабной разработке. Растущее значение интерфейсов приводит к сдвигу в дизайне инструментов искусственного интеллекта, чтобы привлечь больше фронтенд-инженеров. Традиционно, ML-инженерия ориентирована на Python. До появления базовых моделей наиболее популярные фреймворки машинного обучения поддерживали в основном API Python. Сегодня Python по-прежнему популярен, но также расширяется поддержка JavaScript API, таких как LangChain.js, Transformers.js, библиотека Node от OpenAI и AI SDK от Vercel.

В то время как многие инженеры ИИ приходят из традиционного машинного обучения, все больше людей приходят из веб-разработки или полного стека. Преимущество инженеров полного стека перед традиционными инженерами машинного обучения заключается в их способности быстро превращать идеи в демонстрации, получать обратную связь и выполнять итерации. При традиционном проектировании машинного обучения вы обычно начинаете со сбора данных и обучения модели. Сборка продукта идет в последнюю очередь. Тем не менее, с учетом того, что модели ИИ уже сегодня доступны, можно начать с создания продукта и инвестировать в данные и модели только после того, как продукт покажет свои перспективы. В традиционной инженерии машинного обучения разработка модели и разработка продукта часто являются разрозненными процессами, и во многих организациях инженеры машинного обучения редко участвуют в принятии решений о продукте. Однако при работе с базовыми моделями инженеры ИИ, как правило, гораздо больше участвуют в создании продукта.

На страницу:
11 из 15