# BloombergGPT: как обучить LLM на 50 миллиардов параметров для финансового сектора

Источник: https://www.youtube.com/watch?v=byCe7-c84d4
Канал: The TWIML AI Podcast
Опубликовано: 24.07.2023

---

Дэвид Розенберг, возглавляющий отдел стратегии машинного обучения в офисе CTO Bloomberg, рассказывает о создании BloombergGPT — специализированной языковой модели на 50 миллиардов параметров. В интервью обсуждаются технические вызовы обучения LLM с нуля, особенности обработки финансовых данных и стратегический выбор между использованием готовых решений и собственной разработкой.

## 📈 Стратегическое решение и истоки проекта
[[JUMP:00:00]]

Решение об инвестициях в собственную большую языковую модель (LLM) было принято в офисе CTO Bloomberg в конце 2020 года, вскоре после выхода GPT-3 [01:10]. По словам Дэвида Розенберга, в тот момент не было до конца ясно, какими будут конкретные сценарии использования, но потенциал технологии казался огромным.

Основные предпосылки проекта:

*   **Осознанный риск:** хотя точная стоимость обучения GPT-3 не была известна, было очевидно, что это потребует колоссальных ресурсов [03:14].
*   **Специфика данных:** Bloomberg обладает огромными массивами проприетарной финансовой информации, накопленной десятилетиями.
*   **Контроль и безопасность:** для компании критически важно обрабатывать данные внутри собственной инфраструктуры, не отправляя их сторонним провайдерам через API [27:48].

## 🏗️ Архитектура и уникальный набор данных FinPile
[[JUMP:04:01]]

BloombergGPT представляет собой модель с 50 миллиардами параметров. В отличие от универсальных моделей, её обучающая выборка была разделена примерно поровну (50/50) между общедоступными данными и специализированным финансовым корпусом [04:38].

**Состав обучающих данных:**

*   **Общий корпус:** стандартные наборы данных, используемые в моделях типа OPT и Bloom.
*   **FinPile:** массив данных Bloomberg, собиравшийся с 2007 года. Он включает в себя финансовые новости, отчетность компаний (filings), пресс-релизы и транскрипты звонков руководства с инвесторами [05:30].

**Технические особенности:**

*   **Токенизация чисел:** стандартные токенизаторы (например, от GPT-2) разбивают числа случайным образом (например, «5234» может превратиться в «523» и «4»). По словам Розенберга, это усложняет математическую логику модели [06:51]. В BloombergGPT, по аналогии с моделью PaLM, каждое число разбивается на отдельные цифры, чтобы модель могла лучше понимать разрядность [07:17].
*   **Словарь (Vocabulary):** размер словаря составил 150 000 токенов, что значительно больше типичных для английских моделей 50 000 токенов [30:26].
*   **Архитектура:** за основу была взята модель Bloom от сообщества Big Science с небольшими изменениями [08:51].

## 🛠️ «Приключение» длиною в три версии: процесс обучения
[[JUMP:07:45]]

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

1.  **Версия 0 (V0):** Команда применила «обучение по расписанию» (curriculum learning), подавая данные FinPile последовательно во времени (от старых к новым). Через 8–10 дней обучение остановилось: графики производительности на валидационном наборе замерли. По мнению гостя, такой подход оказался слишком рискованным шагом в неизвестность [11:02].
2.  **Версия 1 (V1):** Все данные были перемешаны случайным образом. Обучение шло успешно 8 дней, после чего начались резкие скачки нормы градиента (gradient spikes). Веса в слое Layer Norm в самом начале сети начали аномально расти. Команда пыталась откатываться к чекпоинтам и снижать скорость обучения (learning rate), но это не дало стабильного результата [12:34].
3.  **Версия 2 (V2):** Финальная рабочая версия. Команда исправила баг в оптимизаторе (ошибка в применении weight decay к весам Layer Norm), добавила дополнительный слой Layer Norm в самом начале и исправила проблемы со смешанной точностью (mixed precision) [13:58].

Модель обучалась стабильно в течение 42 дней на инфраструктуре AWS SageMaker [14:36]. Использовалось 512 графических процессоров NVIDIA A100 (40 ГБ). Суммарно было затрачено около 1,3 миллиона GPU-часов [16:57]. Обучение было остановлено на отметке 75% от запланированного объема данных, так как бюджет был исчерпан, а достигнутая производительность уже превзошла ожидания [15:05].

## 📊 Тестирование и бенчмарки
[[JUMP:17:37]]

BloombergGPT сравнивали с открытыми моделями аналогичного размера (OPT-66B, Bloom, GPT-NeoX), а также сопоставляли с опубликованными результатами GPT-3 и PaLM [19:26].

*   **Общие задачи:** Модель показала результаты на уровне конкурентов в тестах типа MMLU и Big Bench Hard [19:54].
*   **Финансовые задачи:** Здесь BloombergGPT значительно опередила аналоги [20:07].
*   **FinQA:** В тесте на понимание финансовых отчетов и таблиц с применением численной логики разрыв между BloombergGPT и другими моделями был наиболее впечатляющим [21:28].
*   **Внутренние задачи:** Модель успешно справилась с анализом настроений (sentiment analysis), распознаванием именованных сущностей (NER) и генерацией заголовок новостей [22:20].

Особый интерес представляет способность модели генерировать код на BQL (Bloomberg Query Language) — сложном внутреннем языке запросов. Несмотря на то, что модель специально не обучалась на BQL, она смогла освоить его в режиме few-shot (на 10 примерах) [23:53].

## 🧪 Будущее: обучение с нуля или дообучение?
[[JUMP:24:48]]

Один из главных вопросов дискуссии — стоит ли компаниям обучать свои модели с нуля. Дэвид Розенберг отмечает, что когда они начинали, доступных моделей с открытыми весами для коммерческого использования практически не было [25:51].

Основные тезисы Розенберга о выборе стратегии:

*   **Адаптация домена:** Если у вас есть 350 миллиардов токенов специализированных данных (как в FinPile), граница между «дообучением» (fine-tuning) и полноценным обучением размывается. Это превращается в адаптацию домена, где наука еще не дала однозначного ответа, какой метод эффективнее [26:43].
*   **Малые модели:** Розенберг проявляет интерес к эффективным малым моделям (типа Llama), которые можно запускать на одном GPU [32:22].
*   **Инструкции:** Сейчас команда занимается дообучением на инструкциях (instruction tuning), используя огромные внутренние массивы размеченных данных Bloomberg [35:45].

## ⚠️ Риски, этика и галлюцинации
[[JUMP:40:41]]

На текущий момент BloombergGPT используется только в исследовательских целях и не внедрена в клиентские продукты [40:41]. По словам Розенберга, компания проявляет крайнюю осторожность из-за нерешенной проблемы галлюцинаций [41:36].

Ключевые вызовы:

1.  **Контроль качества:** если ИИ работает слишком хорошо, люди перестают проверять его ответы. Розенберг задается вопросом: «Как поддерживать вовлеченность и внимательность человека, если нейросеть ошибается редко, но критично?» [43:12].
2.  **Этика:** компания внимательно следит за литературой по этике ИИ, хотя фокусировка на финансовых темах и коде несколько снижает риск столкновения с наиболее острыми социальными проблемами [44:04].

Розенберг заключает, что проект дал команде необходимую уверенность в своих силах. Следующий этап — более дисциплинированные эксперименты с токенизацией, архитектурой и качеством данных на меньших масштабах перед повторным рывком вверх [39:44].