Авторы:
(1) Минцзе Лю, NVIDIA {Равный вклад};
(2) Теодор-Думитру Эне, NVIDIA {Равный вклад};
(3) Роберт Кирби, NVIDIA {Равный вклад};
(4) Крис Ченг, NVIDIA {Равный вклад};
(5) Натаниэль Пинкни, NVIDIA {Равный вклад};
(6) Жунцзянь Лян, NVIDIA {Равный вклад};
(7) Джона Албен, NVIDIA;
(8) Химьяншу Ананд, NVIDIA;
(9) Санмитра Банерджи, NVIDIA;
(10) Исмет Байрактароглу, NVIDIA;
(11) Бонита Бхаскаран, NVIDIA;
(12) Брайан Катандзаро, NVIDIA;
(13) Арджун Чаудхури, NVIDIA;
(14) Шэрон Клэй, NVIDIA;
(15) Билл Далли, NVIDIA;
(16) Лаура Данг, NVIDIA;
(17) Парикшит Дешпанде, NVIDIA;
(18) Сиддхант Дходхи, NVIDIA;
(19) Самир Халепет, NVIDIA;
(20) Эрик Хилл, NVIDIA;
(21) Цзяшан Ху, NVIDIA;
(22) Сумит Джайн, NVIDIA;
(23) Брюсек Хайлани, NVIDIA;
(24) Джордж Кокаи, NVIDIA;
(25) Кишор Кунал, NVIDIA;
(26) Сяовэй Ли, NVIDIA;
(27) Чарли Линд, NVIDIA;
(28) Хао Лю, NVIDIA;
(29) Стюарт Оберман, NVIDIA;
(30) Суджит Омар, NVIDIA;
(31) Сридхар Пратти, NVIDIA;
(23) Джонатан Райман, NVIDIA;
(33) Амбар Саркар, NVIDIA;
(34) Чжэнцзян Шао, NVIDIA;
(35) Ханфэй Сан, NVIDIA;
(36) Пратик П. Сутар, NVIDIA;
(37) Варун Тедж, NVIDIA;
(38) Уокер Тернер, NVIDIA;
(39) Кайжэ Сюй, NVIDIA;
(40) Хаосин Рен, NVIDIA.
Сбор был реализован с помощью набора сценариев оболочки и Python, предназначенных для идентификации соответствующих проектных данных и документации, их преобразования в обычный текст, если это применимо, их фильтрации с использованием базовых показателей качества, вычисления контрольной суммы для точной дедупликации файлов и сжатия их для хранения. В процессе сбора не использовались готовые сценарии очистки и сбора данных, специфичные для LLM, поскольку мы стремились минимизировать требования к пространству за счет сбора данных на месте из внутренних источников данных (как сетевых файловых систем, так и внутренних веб-приложений). При сборе на основе файловой системы данные сохранялись на месте и подвергались фильтрации по качеству вместо локального хранения дополнительных наборов необработанных данных.
Сбор данных проектирования и проверки включал множество исходных файлов, включая Verilog и VHDL (RTL и списки соединений), C++, Spice, Tcl, различные языки сценариев и файлы конфигурации, связанные со сборкой. Данные из внутренних веб-сервисов собирались как с помощью вызовов REST API, так и с помощью обычного сканирования, при этом форматирование HTML удалялось с помощью библиотеки Python с открытым исходным кодом BeautifulSoup [52] в обоих случаях, чтобы свести к минимуму непреднамеренное удаление примеров кода за счет введения большего количества бойлеров. панель навигации и другие элементы HTML-страницы. Наш процесс сбора данных поддерживал традиционные форматы документации, включая .docx, .pptx и .pdf, с использованием легкодоступных библиотек преобразования Python и инструментов с открытым исходным кодом.
Поскольку считается, что большая часть внутренних данных имеет высокое качество, применялась минимальная фильтрация: фильтрация по количеству строк использовалась для исключения слишком больших или маленьких файлов, а файлы были отсортированы по широким категориям: написанные вручную и созданные инструментами.
В этом разделе мы представляем подробные результаты наших адаптивных предварительно обученных моделей. Мы также подробно описываем наши эксперименты по абляции по адаптивному предварительному обучению доменов.
Гиперпараметры DAPT: Подробности представлены в Таблице VI.
Результаты автоматической оценки: Мы представляем подробные результаты тестов автоматической оценки в Таблице VII и Таблице VIII. Для простоты в оставшейся части раздела мы представляем совокупные контрольные результаты исследований абляции:
• Чип : мы сообщаем средние результаты по внутренним тестам проектирования, написания сценариев, ошибок и схем из Таблицы III (5 шагов).
• MMLU: Мы сообщаем общие результаты по MMLU (5-кадровый) [22] — популярному агрегированному тесту по широкому кругу предметов.
• Рассуждение : мы сообщаем средние результаты по популярным общедоступным тестам здравого смысла (0-shot), включая Winogrande [53], hellaswag [54], ARC-easy [55] и RACE-High [56].
• Код : мы сообщаем среднюю скорость прохождения тестов кодирования с жадным декодированием, включая HumanEval [23], VerilogEval-Machine [12] и VerilogEval-Human [12].
Расширение токенизатора. Мы экспериментировали с DAPT, используя исходный токенизатор LLaMA2 и расширенный токенизатор, как описано в разделе III-A. На рисунке 11 показаны сглаженные потери при обучении для ChipNeMo с исходным немодифицированным токенизатором. По сравнению с рисунком 2 мы видим, что расширенный токенизатор имеет большие потери при обучении при инициализации из-за того, что добавленные токены никогда не наблюдаются во время предварительного обучения базовой модели. Аналогичная потеря обучения достигается для DAPT с 1 эпохой.
В Таблице IX представлены агрегированные результаты тестов автоматической оценки. Мы отмечаем, что тщательное увеличение токенизатора и инициализация веса лишь незначительно влияют на производительность модели по общим академическим критериям. DAPT значительно улучшил тесты домена с любым токенизатором, включая кодирование Verilog (никакой существенной разницы в HumanEval). Мы пришли к выводу, что расширение токенизатора дает преимущество в улучшении токенизатора и эффективности обучения без ухудшения общих языковых возможностей модели и возможностей предметной области.
Объединение общедоступных наборов данных. Как было описано в разделе II-A, мы включили в DAPT общедоступные данные, отобранные из часто используемых общедоступных наборов данных для предварительного обучения базовой модели. В первую очередь мы надеялись, что смешивание общедоступных данных, таких как Википедия, с DAPT поможет «исправить» нарушения, вызванные расширением токенизатора, и улучшить общие возможности естественного языка.
моделей. Мы провели еще один раунд DAPT с расширением токенизатора, используя только данные домена, обучая тому же количеству шагов, что соответствует примерно 1,1 эпохе данных. Мы обнаружили, что объединение общедоступных данных немного улучшает результаты. Мы представляем подробные результаты в Таблице X.
На рисунке 12 показаны потери при обучении для ChipNeMo-7B с расширенными токенизаторами, включая сочетание общедоступных наборов данных. Мы наблюдали большие всплески потерь при обучении на начальных этапах обучения, при этом окончательные потери при обучении для моделей 7B были даже лучше, чем исходные гиперпараметры DAPT 13B. Однако мы отмечаем существенное ухудшение тестов естественного языка, как показано в Таблице XII, включая внутридоменный дизайн чипов. Возможности кодирования улучшились, что соответствует выводам [32].
Подчеркнем, что наш случай отличается от случая в [32]. Хотя мы также проводим «непрерывное предварительное обучение», инициализируя предварительно обученные контрольные точки, мы предпочтительно хотим, чтобы модель поддерживала высокий уровень производительности по общим возможностям, в то время как
преобразование информации и знаний о наборе данных предметной области (невидимых при предварительном обучении модели) в веса модели. Напротив, [32] используют общедоступные кодовые данные, в которых преимущественно отсутствуют элементы естественного языка, подчеркивая их основное внимание к задачам, связанным с кодированием. Мы предполагаем, что меньшая скорость обучения сыграла двойную роль в адаптации предметной области, способствуя дистилляции знаний предметной области посредством DAPT, сохраняя при этом баланс, который не отклонялся слишком далеко от базовой модели, тем самым сохраняя общие возможности естественного языка и одновременно значительно улучшая производительность в -доменные задачи
Эффективная точная настройка параметров (PEFT): эффективная точная настройка параметров замораживает веса предварительно обученных моделей и вводит обучаемые параметры в меньшие модели адаптеров для эффективной точной настройки последующих задач. Мы исследуем использование PEFT в DAPT с использованием низкоранговой адаптации (LoRA) [16]. Поскольку наша реализация уровня преобразователя объединяет KQV в одну проекцию, мы добавляем адаптеры LoRA для одной проекции низкого ранга для каждого уровня самообслуживания комбинированным образом. Мы экспериментируем на моделях LLaMA2-13B с оригинальным токенизатором LLaMA2, используя те же настройки обучения DAPT, которые указаны в Таблице VI. Мы провели два эксперимента, введя дополнительные обучаемые параметры — 26,4 миллиона (маленьких) и 211,2 миллиона (больших) соответственно.
На рисунке 13 показаны кривые потерь при обучении моделей LoRA и их сравнение с обучением с полным параметром. Для обеих моделей LoRA потери быстро сходятся и перестают уменьшаться после определенной точки. В Таблице XIII представлены результаты оценки моделей LoRA. Обе модели LoRA значительно отстают от полного обучения параметров при выполнении задач проектирования микросхем внутри предметной области. Модели LoRA улучшают задачи проектирования микросхем по сравнению с их аналогами без DAPT, при этом более крупная модель демонстрирует немного лучшие (но несущественные) результаты.
Создание обучающих выборок вручную требует больших усилий, поэтому мы решили внедрить процесс их автоматического создания. Поскольку для точной настройки нашей модели мы используем контрастное обучение, для каждой выборки требуется набор как положительных, так и отрицательных отрывков, особенно жестких отрицательных, чтобы максимизировать точность.
1) Процедура выборки набора данных: на рисунке 14 описаны шаги, предпринятые для создания выборки:
• Шаг 1. Случайным образом выберите отрывок из корпуса документов.
• Шаг 2. Используйте языковую модель (Викунья), чтобы сгенерировать действительный запрос на основе отрывка.
• Шаг 3. Используйте уже существующую модель поиска (преобразователь предложений) для извлечения первых N отрывков из корпуса документов для запроса, где каждый отрывок является потенциально категорически отрицательным.
• Шаг 4. Возможно, некоторые из выбранных отрывков на самом деле являются положительными, поэтому используйте ту же языковую модель для фильтрации положительных отрывков.
• Шаг 5: Если после процесса фильтрации недостаточно отрицательных отрывков, дополните их случайными отрывками из корпуса.
Для нашего первоначального исследования мы использовали Vicuna [4] и Sentence Transformer [33]; однако их можно легко заменить на LLaMA2 [5] и BM25 [42] соответственно, чтобы создать модель поиска, коммерчески жизнеспособную.
2) Сравнение качества попаданий: не все попадания одинаковы. Отрывок из примера спецификации ниже ясно и полностью отвечает на поставленный вопрос. Отрывок в примере сборки содержит ответ; однако для ответа на запрос требуется больше контекста.
Пример спецификации: Отрывок ответа четко отвечает на запрос.
Пример сборки: для полного ответа на запрос необходима дополнительная информация. Например: Что такое DL? Как мы узнаем, что Arch-Build-Hotseat-XXX является DL?
D. Дополнительные данные оценки
В таблице XIV показаны оценочные данные для всех моделей приложения чат-бота Engineering Assistant.
В таблице XV показаны результаты нашей оценки для всех моделей в задаче создания сценария EDA.
В таблице XVI показаны результаты нашей оценки для всех моделей в задаче обобщения и анализа ошибок.
1) Чат-бот «Помощник инженера»:
2) Генерация сценариев EDA: имена некоторых функций и команд запутаны.
3) Сводка и анализ ошибок: имена пользователей, имена чипов и пути запутаны.
Этот документ доступен на arxiv под лицензией CC 4.0.