Профессия AI Engineer: от основ LLM до разработки интеллектуальных систем

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

1. Роль AI Engineer и ландшафт современных генеративных технологий

Роль AI Engineer и ландшафт современных генеративных технологий

В 2023 году капитализация компании NVIDIA превысила триллион долларов, а количество вакансий, содержащих аббревиатуру LLM, выросло на сотни процентов. Однако за этим хайпом скрывается фундаментальный сдвиг в самой парадигме разработки программного обеспечения. Если раньше программист создавал жесткие алгоритмы «если — то», то сегодня он учится управлять вероятностными системами, которые способны рассуждать, писать код и анализировать неструктурированные данные. Мы стоим на пороге эпохи, где основной компетенцией инженера становится не только написание чистого кода, но и умение интегрировать «цифровой интеллект» в бизнес-логику приложений.

Эволюция от Data Scientist к AI Engineer

Долгое время работа с искусственным интеллектом была прерогативой Data Scientists — специалистов с глубоким математическим бэкграундом, которые обучали модели с нуля, подбирали гиперпараметры и возились с очисткой гигантских датасетов. AI Engineer (или AI App Engineer) — это роль новой волны.

Ключевое отличие заключается в точке приложения усилий. AI Engineer не обучает базовую модель (Foundation Model) вроде GPT-4 или Claude 3. Он берет готовую мощную модель и строит вокруг нее работающую систему. Это инженерная дисциплина, которая требует понимания API, архитектуры облачных сервисов, баз данных и специфических методов «программирования» моделей через текст (промпт-инжиниринг).

> «Data Scientist создает модель. AI Engineer создает продукт на базе этой модели».

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

  • Data Scientist предложил бы собрать терабайты логов диалогов и дообучить (fine-tune) на них модель. Это дорого, долго и требует мощных GPU.
  • AI Engineer пойдет по пути RAG (Retrieval-Augmented Generation): он настроит интеграцию с векторной базой данных, где лежат регламенты, и научит модель находить нужный кусок текста перед ответом. Это дешевле, быстрее и позволяет обновлять знания системы за секунды без переобучения.
  • Ландшафт генеративных технологий: от моделей к экосистемам

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

    Уровень 1: Foundation Models (Базовые модели)

    Это фундамент. Модели, обученные на колоссальных объемах данных (весь интернет, книги, код).
  • Проприетарные (закрытые): OpenAI (GPT-4o), Anthropic (Claude 3.5 Sonnet), Google (Gemini 1.5 Pro). Они доступны только через API, вы платите за каждый токен (единицу текста).
  • Open-source (открытые): Meta (Llama 3), Mistral, Qwen. Их можно развернуть на собственных серверах, что критично для безопасности данных.
  • Уровень 2: Инфраструктура и API

    Здесь происходят вызовы моделей. AI Engineer должен понимать разницу между стримингом ответов (когда текст появляется постепенно) и пакетной обработкой. На этом уровне мы сталкиваемся с понятием «контекстного окна».

    Представьте, что контекстное окно — это оперативная память модели. Если у GPT-4o это токенов, а у Gemini 1.5 Pro — до токенов, то инженер должен решить: стоит ли «скармливать» модели всю книгу целиком или лучше эффективно вырезать из нее нужные фрагменты?

    Уровень 3: Оркестрация и инструменты (LangChain, LlamaIndex)

    Модель сама по себе — это просто функция «текст на вход -> текст на выход». Чтобы превратить ее в приложение, нужны инструменты, которые:
  • Сохраняют историю диалога.
  • Позволяют модели вызывать внешние функции (например, проверить погоду или сделать запрос в SQL-базу).
  • Объединяют несколько вызовов моделей в цепочки.
  • Уровень 4: Векторные хранилища (Pinecone, Weaviate, Chroma)

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

    Анатомия LLM: что на самом деле происходит под капотом

    Для AI-инженера важно понимать математическую природу модели, чтобы не ожидать от нее невозможного. LLM — это статистический предсказатель следующего токена.

    Токен — это не всегда слово. В среднем 1000 токенов 750 слов. Модель вычисляет вероятности для всех возможных продолжений текста. Например, на фразу «Мама мыла...» модель с высокой вероятностью предложит «раму».

    Процесс генерации описывается параметрами, которые инженер настраивает в коде:

  • Temperature (): Параметр хаоса. При модель становится детерминированной (выбирает только самый вероятный вариант). При ответы становятся креативными, но могут быть бессвязными.
  • Top-p (Nucleus sampling): Ограничение выбора только теми токенами, суммарная вероятность которых составляет .
  • Где — вероятность выбора токена, — логит (сырой балл) токена, а — температура. Эта формула показывает, как температура масштабирует уверенность модели перед финальным выбором.

    Ключевые вызовы и «боли» AI-разработки

    Работа AI Engineer — это не только написание красивых промптов. Это борьба с ограничениями технологии.

    1. Галлюцинации

    Модели склонны уверенно врать. Они могут выдумать несуществующий закон, библиотеку Python или исторический факт. Инженер внедряет системы верификации: например, просит модель саму проверить свой ответ или сопоставить его с фактами из надежного источника (RAG).

    2. Недетерминированность

    Один и тот же код в классическом программировании всегда дает один результат. В AI один и тот же промпт может выдать разные ответы. Это создает огромные сложности для тестирования. Как написать Unit-тест для функции, которая каждый раз отвечает по-разному? Здесь в игру вступает LLM-based Evaluation — когда одна (более мощная) модель проверяет работу другой.

    3. Стоимость и задержки (Latency)

    Вызов GPT-4 может занимать 10-20 секунд. Для пользовательского интерфейса это вечность. AI Engineer должен уметь:
  • Использовать асинхронные вызовы.
  • Применять кэширование (если пользователь задал тот же вопрос, не тратить деньги на API, а отдать ответ из базы).
  • Выбирать «малые» модели (SLM — Small Language Models) для простых задач.
  • Стек инструментов современного AI Engineer

    Если вы хотите войти в профессию, ваш «джентльменский набор» будет выглядеть так:

  • Язык: Python (стандарт де-факто) или TypeScript.
  • Библиотеки для работы с AI: openai, anthropic, langchain, llamaindex.
  • Векторные БД: ChromaDB (для тестов), Pinecone или PGVector (расширение для PostgreSQL).
  • Инструменты для промптов: LangSmith или Weights & Biases для отладки и мониторинга того, что модель пишет в реальности.
  • Локальный запуск моделей: Ollama или vLLM. Это позволяет запускать Llama 3 прямо на вашем ноутбуке (если хватает RAM) или на выделенном сервере, не платя за токены.
  • Почему это важно именно сейчас?

    Мы наблюдаем переход от «AI-как-фишки» к «AI-как-инфраструктуре». Раньше компании создавали отдельные чат-боты. Сейчас они переписывают внутренние CRM, ERP и системы документооборота так, чтобы AI был внутри каждого поля ввода.

    AI Engineer становится «клеем» между бизнесом и технологиями. Он должен понимать, где использование LLM оправдано, а где достаточно обычного регулярного выражения. Например, классификация писем на «спам/не спам» — задача для маленькой классической модели. А вот написание персонализированного ответа на основе истории покупок — это уже работа для LLM и AI-инженера.

    В следующих главах мы детально разберем архитектуру Трансформеров, чтобы вы понимали, почему модели обладают «вниманием» (Attention механизм), и как это знание помогает писать промпты, которые не сбивают модель с толку. Мы научимся работать с API не просто как с черным ящиком, а как с управляемым инструментом, требующим четкой настройки параметров и структуры данных.

    Профессия AI Engineer — это марафон, а не спринт. Технологии обновляются каждую неделю. То, что было актуально в понедельник (например, новая модель от Anthropic), к пятнице может стать стандартом индустрии. Поэтому главным навыком становится адаптивность и умение быстро тестировать гипотезы.

    2. Фундаментальные основы LLM и архитектура моделей-трансформеров

    Фундаментальные основы LLM и архитектура моделей-трансформеров

    Почему модель, обученная просто предсказывать следующее слово в интернете, внезапно обретает способность писать код, рассуждать логически и переводить с редких диалектов? До 2017 года развитие нейросетей для обработки текста шло по пути усложнения рекуррентных связей, но настоящий прорыв случился, когда исследователи Google предложили архитектуру, которая полностью отказалась от последовательной обработки данных. Этот архитектурный сдвиг не просто ускорил обучение, он изменил саму природу того, как машины «понимают» контекст. Понимание внутреннего устройства трансформера — это не академическая прихоть, а фундаментальный навык AI Engineer, позволяющий осознанно управлять контекстным окном, оптимизировать затраты на токены и диагностировать причины «галлюцинаций» модели.

    Эволюционный тупик и рождение механизма внимания

    До появления трансформеров доминирующей архитектурой были рекуррентные нейронные сети (RNN) и их продвинутые версии — LSTM (Long Short-Term Memory). Проблема RNN заключалась в их линейности: они читали текст слово за словом, слева направо. Чтобы понять смысл десятого слова в предложении, модель должна была пропустить через свою «память» (скрытое состояние) все девять предыдущих слов.

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

    В 2017 году вышла статья «Attention Is All You Need», которая предложила радикальную идею: нам не нужна последовательность. Нам нужно внимание.

    > «Механизм внимания позволяет модели фокусироваться на релевантных частях входной последовательности независимо от их удаления друг от друга в тексте». > > Attention Is All You Need (Vaswani et al.)

    Трансформеры обрабатывают все токены в предложении одновременно (параллельно). Чтобы понять слово «он» в предложении «Джон пришел в магазин, потому что он хотел купить хлеб», трансформеру не нужно «идти» от «он» назад к «Джон». Он вычисляет связи между всеми словами сразу, мгновенно определяя, что «он» математически сильнее всего связано с вектором слова «Джон».

    Анатомия трансформера: Encoder и Decoder

    Классическая архитектура трансформера состоит из двух блоков: энкодера (кодировщика) и декодера (декодировщика). Понимание их различий критично, так как современные модели часто используют только одну из этих частей.

  • Encoder (Энкодер): Его задача — прочитать входной текст и построить его богатое математическое представление (контекстные эмбеддинги). Он «смотрит» на текст целиком, видя и левый, и правый контекст каждого слова. Модели на базе только энкодера (например, BERT) идеально подходят для классификации текстов, извлечения сущностей или поиска ответов в тексте, но они плохо генерируют связный текст.
  • Decoder (Декодер): Его задача — генерировать текст по одному токену за раз. В отличие от энкодера, классический декодер при генерации текущего слова «видит» только предыдущие слова. Это называется каузальным (причинно-следственным) вниманием. Почти все современные LLM, с которыми работает AI Engineer (GPT-4, Claude, Llama), являются Decoder-only моделями.
  • Процесс прохождения данных через слои

    Когда вы отправляете промпт в GPT-4, происходит многоступенчатая трансформация данных:

  • Токенизация: Текст разбивается на токены.
  • Input Embedding: Каждый токен превращается в вектор чисел в многомерном пространстве.
  • Positional Encoding: Поскольку трансформер обрабатывает все слова одновременно, он «не знает», в каком порядке они стоят. К векторам слов добавляются специальные позиционные метки, чтобы модель понимала: слово №1 стоит перед словом №2.
  • Слои Attention и Feed-Forward: Данные проходят через стопку идентичных слоев (в GPT-3 их 96), где каждый слой уточняет понимание контекста.
  • Linear & Softmax: На выходе модель выдает вероятности для всех возможных токенов в своем словаре.
  • Механизм Self-Attention: Математика «смысла»

    Сердце трансформера — Self-Attention (самовнимание). Чтобы понять, как это работает, представим, что каждое слово в предложении — это человек на вечеринке, который ищет собеседников.

    Для каждого токена создаются три вектора: * Query (Запрос): «Что я ищу?» * Key (Ключ): «Что я могу предложить другим?» * Value (Значение): «Какую информацию я содержу?»

    Математически это выглядит так. Для каждого входного вектора мы вычисляем:

    Где — матрицы весов, которые модель выучила в процессе обучения.

    Затем мы вычисляем оценку внимания (Attention Score). Это скалярное произведение вектора Query одного слова на векторы Key всех остальных слов. Чем выше результат, тем больше «внимания» одно слово уделяет другому.

    Формула Scaled Dot-Product Attention:

    Здесь: * — матрица сходства между всеми парами слов. * — масштабирующий фактор (корень из размерности векторов), который предотвращает слишком большие значения в softmax, чтобы градиенты не «умирали». * — превращает оценки в вероятности (сумма строк равна 1). * Умножение на — мы собираем итоговый смысл слова как взвешенную сумму «значений» всех остальных слов.

    Multi-Head Attention (Многоголовое внимание): В реальности модель использует не один такой механизм, а несколько параллельно (головы внимания). Одна «голова» может фокусироваться на грамматических связях (кто совершил действие?), другая — на эмоциональной окраске, третья — на фактических данных. Это позволяет модели одновременно анализировать текст в разных аспектах.

    Почему размер контекстного окна ограничен?

    Как AI Engineer, вы постоянно будете сталкиваться с ограничением контекстного окна (Context Window). Почему нельзя просто подать в GPT-4 целую библиотеку?

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

    Если вы увеличите длину текста в 2 раза, нагрузка на память и вычислитель вырастет в 4 раза. Если в 10 раз — в 100 раз. * Для 1 000 токенов нужно операций сравнения. * Для 100 000 токенов нужно операций.

    Современные модели (например, Gemini 1.5 Pro с окном в 2 млн токенов) используют оптимизированные алгоритмы, такие как FlashAttention или разреженное внимание (Sparse Attention), чтобы обойти это ограничение, но фундаментальная стоимость «памяти» модели остается высокой. Это объясняет, почему API-провайдеры берут плату отдельно за входные токены (обработка контекста) и выходные.

    Обучение LLM: Pre-training, SFT и RLHF

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

    1. Pre-training (Предварительное обучение)

    Это самый дорогой этап. Модель «читает» терабайты текста (Common Crawl, Wikipedia, GitHub, книги). На этом этапе у модели нет цели «быть полезным помощником». Ее единственная цель — Next Token Prediction (предсказание следующего токена). Если вы дадите «голой» предобученной модели (Base Model) промпт «Напиши рецепт пиццы», она может ответить: «...и список ингредиентов для пасты», потому что она просто имитирует структуру кулинарных книг, а не выполняет вашу команду. На этом этапе формируется «мировоззрение» модели и ее фактические знания.

    2. SFT (Supervised Fine-Tuning)

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

    3. RLHF (Reinforcement Learning from Human Feedback)

    Это этап «полировки» и безопасности. Модель генерирует несколько вариантов ответа на один вопрос, а человек ранжирует их: «этот ответ лучше, этот хуже, а этот опасен». На основе этих оценок обучается Reward Model (модель вознаграждения), которая затем «дрессирует» основную LLM через алгоритмы обучения с подкреплением (например, PPO или DPO). Именно RLHF делает модель вежливой, безопасной и заставляет ее отвечать «Я — большая языковая модель, созданная OpenAI...».

    Проблема «Галлюцинаций» сквозь призму архитектуры

    Галлюцинации — это не баг, который можно легко исправить, это фундаментальное свойство архитектуры трансформеров. Поскольку модель — это статистический предсказатель, она не имеет доступа к внешнему миру или базе данных фактов (если мы не используем RAG).

    Когда модель пишет: «В 1923 году президентом Исландии был Джон Смит», она делает это потому, что в ее внутреннем пространстве векторов сочетание этих токенов имеет высокую статистическую вероятность. Трансформер не «проверяет» факт, он «рисует» его пиксель за пикселем (токен за токеном), основываясь на паттернах, увиденных при обучении.

    Для AI Engineer это означает:

  • Нельзя доверять фактам внутри весов модели для критических задач.
  • Нужно использовать RAG, чтобы подавать проверенную информацию в контекстное окно, заставляя модель работать как «аналитик текста», а не как «энциклопедия».
  • Особенности современных архитектур: MoE (Mixture of Experts)

    Вы могли слышать, что GPT-4 или Mixtral — это не одна огромная модель, а «смесь экспертов» (Mixture of Experts, MoE). Это важный архитектурный нюанс для понимания производительности.

    В обычной модели для каждого токена активируются все параметры. В MoE-модели слой Feed-Forward разделен на несколько «экспертов». Для каждого токена специальный механизм (Router) выбирает только 2-3 эксперта, которые будут его обрабатывать. * Преимущество: Модель может иметь 1.8 триллиона параметров (как, по слухам, GPT-4), но для обработки одного токена использовать лишь малую часть. Это позволяет модели быть «умнее» без пропорционального замедления генерации. * Нюанс для инженера: MoE-модели требуют огромного объема видеопамяти (VRAM), чтобы держать всех экспертов «под рукой», даже если в конкретный момент работают не все.

    Практические следствия для разработки

    Понимание архитектуры трансформеров диктует правила игры для AI App Engineer:

  • KV-Caching: Когда вы строите чат-бота, модель при каждом новом сообщении заново пересчитывает векторы (Key и Value) для всего предыдущего диалога. Это дорого. Облачные провайдеры используют KV-кеширование, чтобы сохранять эти вычисления. Для вас это означает, что длинные диалоги всегда будут дороже и медленнее коротких, даже если ответ модели состоит из одного слова.
  • Потеря середины (Lost in the Middle): Исследования показывают, что трансформеры лучше «помнят» информацию в самом начале и в самом конце контекстного окна. Если вы поместите важную инструкцию или кусок данных в середину промпта на 50 000 токенов, модель с большой вероятностью ее проигнорирует.
  • Токенизация и код: Поскольку токены — это не всегда слова, символы вроде пробелов или специфических знаков препинания в коде могут по-разному разбиваться на токены. Это влияет на то, как модель «понимает» синтаксис. При работе с кодом или специфическими форматами данных (JSON, YAML) всегда стоит проверять, как именно модель видит эти данные через токенизатор.
  • Трансформеры перевернули индустрию, заменив последовательную логику параллельными вычислениями и механизмом внимания. Однако они остаются «вероятностными машинами», ограниченными своим контекстным окном и обучающей выборкой. Ваша задача как инженера — не просто «писать промпты», а понимать эти физические и математические ограничения, чтобы строить надежные системы там, где базовая модель может ошибиться.