paint-brush
ChipNeMo: LLMs adaptados ao domínio para design de chips: conjunto de dadospor@textmodels

ChipNeMo: LLMs adaptados ao domínio para design de chips: conjunto de dados

Muito longo; Para ler

Os pesquisadores apresentam o ChipNeMo, usando adaptação de domínio para aprimorar LLMs para design de chips, alcançando uma redução de até 5x no tamanho do modelo com melhor desempenho.
featured image - ChipNeMo: LLMs adaptados ao domínio para design de chips: conjunto de dados
Writings, Papers and Blogs on Text Models HackerNoon profile picture
0-item

Autores:

(1) Mingjie Liu, NVIDIA {Contribuição igual};

(2) Teodor-Dumitru Ene, NVIDIA {Contribuição igual};

(3) Robert Kirby, NVIDIA {Contribuição igual};

(4) Chris Cheng, NVIDIA {Contribuição igual};

(5) Nathaniel Pinckney, NVIDIA {Contribuição igual};

(6) Rongjian Liang, NVIDIA {Contribuição igual};

(7) Jonah Alben, NVIDIA;

(8) Himyanshu Anand, NVIDIA;

(9) Sanmitra Banerjee, NVIDIA;

(10) Ismet Bayraktaroglu, NVIDIA;

(11) Bonita Bhaskaran, NVIDIA;

(12) Bryan Catanzaro, NVIDIA;

(13) Arjun Chaudhuri, NVIDIA;

(14) Sharon Clay, NVIDIA;

(15) Bill Dally, NVIDIA;

(16) Laura Dang, NVIDIA;

(17) Parikshit Deshpande, NVIDIA;

(18) Siddhanth Dhodhi, NVIDIA;

(19) Sameer Halepete, NVIDIA;

(20) Eric Hill, NVIDIA;

(21) Jiashang Hu, NVIDIA;

(22) Sumit Jain, NVIDIA;

(23) Brucek Khailany, NVIDIA;

(24) George Kokai, NVIDIA;

(25) Kishor Kunal, NVIDIA;

(26) Xiaowei Li, NVIDIA;

(27) Charley Lind, NVIDIA;

(28) Hao Liu, NVIDIA;

(29) Stuart Oberman, NVIDIA;

(30) Sujeet Omar, NVIDIA;

(31) Sreedhar Pratty, NVIDIA;

(23) Jonathan Raiman, NVIDIA;

(33) Ambar Sarkar, NVIDIA;

(34) Zhengjiang Shao, NVIDIA;

(35) Hanfei Sun, NVIDIA;

(36) Pratik P Suthar, NVIDIA;

(37) Varun Tej, NVIDIA;

(38) Walker Turner, NVIDIA;

(39) Kaizhe Xu, NVIDIA;

(40) Haoxing Ren, NVIDIA.

Tabela de links

II. CONJUNTO DE DADOS

A. Conjunto de dados DAPT


Durante o pré-treinamento adaptativo de domínio (DAPT), montamos um conjunto de dados a partir de uma combinação de fontes de dados específicas de design de chip de propriedade da NVIDIA e conjuntos de dados disponíveis publicamente.


Conjuntos de dados de design de chips: Nosso conjunto de dados interno consiste em uma ampla gama de fontes de texto pertinentes ao design de chips, abrangendo design, verificação, infraestrutura e documentação interna. A Tabela I fornece um detalhamento dos dados coletados após a filtragem e o número correspondente de tokens usando o tokenizer LLaMA2. Construímos o conjunto de dados reunindo todos os dados internos relevantes e, em seguida, filtrando por tipo de arquivo, com base nas extensões de nome de arquivo e distinguindo entre conteúdo gerado por máquina e conteúdo escrito por humanos. Embora tenhamos avaliado três casos de uso específicos, não limitamos especificamente o conjunto de dados a fontes conhecidas como relevantes para esses casos de uso, pois acreditamos que a incorporação de conhecimento adicional do domínio melhoraria o desempenho. Após coleta, limpeza e filtragem, o corpus interno de treinamento de dados conta com 23,1 bilhões de tokens. Mais detalhes sobre o processo de coleta de dados são abordados no Apêndice A.


Conjuntos de dados públicos: aumentamos os dados específicos do design do chip com uma amostra de dados disponíveis publicamente de várias fontes, uma prática comum no desenvolvimento de grandes modelos de linguagem fundamentais. Nossa abordagem foi reutilizar dados públicos de treinamento de outros modelos de linguagem, com a estipulação de que deveriam ser acessíveis ao público e compatíveis com código aberto. Esses conjuntos de dados apresentam um alto grau de correlação com os dados de pré-treinamento utilizados no LLaMA2 [5], com a intenção de preservar o conhecimento geral e as capacidades de linguagem natural durante o DAPT. Os conjuntos de dados públicos usados pelo ChipNeMo podem ser categorizados em dois grupos, linguagem natural e código. Para o componente de linguagem natural, utilizamos dados da Wikipédia [17], pois é amplamente reconhecido por sua alta qualidade de dados. Para o código, aproveitamos os dados do GitHub [18], com foco em linguagens de programação também presentes em nosso conjunto de dados de design de chip de dados interno, como C++, Python e Verilog. Para garantir que o conjunto de dados geral seja representativo das distribuições de pré-treinamento, realizamos uma operação de subamostragem que resulta em aproximadamente 9,2% do total de tokens de treinamento sendo amostrados desses conjuntos de dados públicos, com uma representação equilibrada de linguagem natural e código.


Combinação de dados: uma proporção significativa dos dados de domínio que coletamos é composta por código não anotado de diversas origens. Em um esforço para melhorar a compreensão do modelo sobre o conhecimento específico do domínio, conduzimos a redução da amostragem dos dados do código e, ao mesmo tempo, aumentamos a amostragem dos dados de linguagem natural, especificamente a documentação do projeto, durante um período de 2 a 4 épocas de treinamento. Também aumentamos a representação de dados que consideramos mais pertinentes para aplicações downstream, como scripts de ferramentas EDA escritos por humanos. Além disso, incorporamos dados de domínio disponíveis publicamente durante uma época. Detalhes da distribuição de tokens para treinamento são mostrados na Tabela I.


B. Dados de instrução SFT


Durante o ajuste fino supervisionado (SFT), empregamos um conjunto de dados de instruções SFT de bate-papo geral que é acessível para uso comercial. O conjunto de dados é composto em grande parte por instruções publicamente disponíveis seguindo conjuntos de dados, incluindo OASST [19], FLAN [20], P3 [21] e uma pequena quantidade de um conjunto de dados proprietário de amplo domínio compreendendo vários tópicos, como brainstorming, resposta a perguntas abertas, reescrita , resumo etc. É importante observar que os dados de instrução SFT que discutimos aqui se concentram em tarefas gerais de linguagem natural e não contêm nenhuma informação ou tarefa relacionada aos casos de uso downstream no design de chips. No total, este conjunto de dados compreende 128.000 amostras de treinamento.


Além disso, montamos meticulosamente um conjunto de dados de instruções específicas do domínio para alinhar o modelo aos casos de uso posteriores. Esses exemplos foram meticulosamente elaborados por especialistas no assunto e são formatados como perguntas e respostas únicas. A Tabela II mostra a quantidade de nosso conjunto de dados de instruções específicas de domínio. Vale a pena notar que o número total de amostras de treinamento no conjunto de dados de instruções específicas do domínio é muito pequeno quando comparado à extensa quantidade de dados generativos de instruções de chat.


C. Avaliação automática


Para avaliar rápida e quantitativamente a precisão de vários modelos, estabelecemos critérios de avaliação estruturados como formatos de perguntas e respostas de múltipla escolha para cada caso de uso, projetados para se alinharem estreitamente com benchmarks estabelecidos, como MMLU [22]. No processo de formulação destas questões de múltipla escolha, a colaboração com especialistas no domínio foi fundamental. O objetivo era garantir que cada pergunta incluísse pelo menos uma opção de resposta complexa, representando assim um desafio para indivíduos com conhecimentos limitados no domínio. Também foi dada especial atenção para evitar qualquer contaminação inadvertida das questões com dados do nosso SFT específico do domínio. Além dos benchmarks por caso de uso, um benchmark adicional foi criado para conhecimento geral de design de circuitos, abrangendo tópicos de design analógico e digital. O número de questões de múltipla escolha para referencial de avaliação são apresentados na Tabela III.


Quando reportamos resultados nos benchmarks acima, tomamos resultados médios obtidos em cinco execuções distintas para mitigar os efeitos de variação e ruído no processo de teste. Cada iteração emprega um conjunto de exemplos de 5 tentativas, com variações introduzidas em cada execução individual.


Além desses benchmarks de avaliação específicos de domínio, também incluímos benchmarks acadêmicos de LLM comumente usados e disponíveis publicamente. Além disso, medimos as capacidades de geração de código do modelo, avaliando HumanEval [23] para Python e VerilogEval [12] para Verilog.


Este artigo está disponível no arxiv sob licença CC 4.0.