저자:
(1) Mingjie Liu, NVIDIA {동등 기여};
(2) Teodor-Dumitru Ene, NVIDIA {동등 기여};
(3) Robert Kirby, NVIDIA {동등 기여};
(4) Chris Cheng, NVIDIA {동등 기여};
(5) Nathaniel Pinckney, NVIDIA {동등 기여};
(6) Rongjian Liang, NVIDIA {동등 기여};
(7) 조나 알벤(NVIDIA);
(8) 히미안슈 아난드, 엔비디아;
(9) 산미트라 바네르지(NVIDIA);
(10) 이스멧 베이락타로글루(Ismet Bayraktaroglu), NVIDIA;
(11) 보니타 바스카란(NVIDIA);
(12) 브라이언 카탄자로(NVIDIA);
(13) 아르준 차우두리(Arjun Chaudhuri), 엔비디아;
(14) 샤론 클레이, 엔비디아;
(15) 빌 댈리(Bill Dally), 엔비디아;
(16) 로라 당(NVIDIA);
(17) Parikshit Deshpande, NVIDIA;
(18) 싯단스 도디(Siddanth Dhodhi), 엔비디아;
(19) 사미르 할레페테(NVIDIA);
(20) 에릭 힐, 엔비디아;
(21) 후자상(Jiashang Hu), 엔비디아;
(22) 수미트 자인(NVIDIA);
(23) 브루섹 카일라니(NVIDIA);
(24) 조지 코카이(George Kokai), 엔비디아;
(25) 키쇼르 쿠날(Kishor Kunal), 엔비디아;
(26) 샤오웨이 리, 엔비디아;
(27) 찰리 린드, 엔비디아;
(28) 하오 리우, 엔비디아;
(29) 스튜어트 오버만(NVIDIA);
(30) 수지트 오마르(NVIDIA);
(31) 스리다르 프래티(NVIDIA);
(23) 조나단 레이먼(NVIDIA);
(33) 암바르 사르카르(Ambar Sarkar), 엔비디아;
(34) 정장샤오(Zhengjiang Shao), 엔비디아;
(35) 한페이 선(Hanfei Sun), 엔비디아;
(36) Pratik P Suthar, NVIDIA;
(37) 바룬 테지(Varun Tej), 엔비디아;
(38) 워커 터너, 엔비디아;
(39) 카이제 쉬(Kaizhe Xu), 엔비디아;
(40) 하오싱 렌(Haoxing Ren), 엔비디아.
A. DAPT 데이터세트
DAPT(Domain-Adaptive Pre-Training) 중에 우리는 NVIDIA 독점 칩 설계 관련 데이터 소스와 공개적으로 사용 가능한 데이터 세트를 조합하여 데이터 세트를 구성합니다.
칩 설계 데이터 세트: 당사의 내부 데이터 세트는 칩 설계, 설계, 검증, 인프라 및 내부 문서와 관련된 다양한 텍스트 소스로 구성됩니다. 표 I은 필터링 후 수집된 데이터의 분석과 LLaMA2 토크나이저를 사용하여 해당하는 토큰 수를 제공합니다. 우리는 모든 관련 내부 데이터를 수집한 다음 파일 이름 확장자를 기준으로 파일 유형별로 필터링하고 기계 생성 콘텐츠와 사람이 작성한 콘텐츠를 구별하여 데이터 세트를 구성합니다. 세 가지 특정 사용 사례를 평가했지만 추가 도메인 지식을 통합하면 성능이 향상될 것이라고 믿었기 때문에 이러한 사용 사례와 관련이 있는 것으로 알려진 소스로 데이터세트를 특별히 제한하지 않았습니다. 수집, 정리, 필터링을 거친 후 내부 데이터 훈련 코퍼스에는 231억 개의 토큰이 있습니다. 데이터 수집 프로세스에 대한 자세한 내용은 부록 A에 나와 있습니다.
공개 데이터 세트: 우리는 기본 대규모 언어 모델 개발의 일반적인 관행인 다양한 소스에서 공개적으로 사용 가능한 데이터 샘플을 사용하여 칩 설계 관련 데이터를 강화합니다. 우리의 접근 방식은 공개적으로 액세스할 수 있고 오픈 소스와 호환되어야 한다는 조건 하에 다른 언어 모델의 공개 훈련 데이터를 재사용하는 것이었습니다. 이러한 데이터 세트는 DAPT 중에 일반 지식과 자연어 기능을 보존하려는 의도로 LLaMA2[5]에 사용된 사전 훈련 데이터와 높은 수준의 상관 관계를 나타냅니다. ChipNeMo에서 사용하는 공개 데이터 세트는 자연어와 코드의 두 그룹으로 분류할 수 있습니다. 자연어 구성 요소의 경우 높은 데이터 품질로 널리 알려져 있는 Wikipedia 데이터[17]에서 가져옵니다. 코드의 경우 GitHub 데이터[18]를 활용하고 C++, Python 및 Verilog와 같은 내부 데이터 칩 설계 데이터세트에도 존재하는 프로그래밍 언어에 중점을 둡니다. 전체 데이터세트가 사전 훈련 분포를 대표하는지 확인하기 위해 우리는 자연어와 코드의 균형 잡힌 표현을 통해 전체 훈련 토큰의 약 9.2%가 이러한 공개 데이터세트에서 샘플링되는 하위 샘플링 작업을 수행합니다.
데이터 혼합: 우리가 수집한 도메인 데이터의 상당 부분은 다양한 출처의 주석 없는 코드로 구성되어 있습니다. 도메인별 지식에 대한 모델의 이해력을 향상시키기 위한 노력의 일환으로 우리는 코드 데이터의 다운샘플링을 수행하는 동시에 자연어 데이터, 특히 설계 문서를 2~4개의 훈련 에포크에 걸쳐 업샘플링했습니다. 또한 사람이 작성한 EDA 도구 스크립트와 같이 다운스트림 애플리케이션과 더 관련이 있다고 판단되는 데이터 표현을 늘렸습니다. 또한 공개적으로 사용 가능한 도메인 데이터를 1개 에포크에 통합했습니다. 훈련을 위한 토큰 배포에 대한 자세한 내용은 표 I에 나와 있습니다.
B. SFT 명령어 데이터
SFT(Supervised Fine-Tuning) 중에는 상업적 용도로 액세스할 수 있는 일반 채팅 SFT 지침 데이터 세트를 사용합니다. 데이터 세트는 주로 OASST [19], FLAN [20], P3 [21]를 포함한 데이터 세트와 브레인스토밍, 개방형 질문 답변, 재작성과 같은 다양한 주제로 구성된 소량의 광범위한 도메인 독점 데이터 세트를 따르는 공개적으로 사용 가능한 지침으로 구성됩니다. , 요약 등. 여기서 논의하는 SFT 명령어 데이터는 일반적인 자연어 작업에 초점을 맞추고 있으며 칩 설계의 다운스트림 사용 사례와 관련된 정보나 작업을 포함하지 않는다는 점에 유의하는 것이 중요합니다. 전체적으로 이 데이터 세트는 128,000개의 훈련 샘플로 구성됩니다.
또한 모델을 다운스트림 사용 사례에 맞추기 위해 도메인별 지침 데이터 세트를 꼼꼼하게 구성했습니다. 이러한 예는 해당 분야 전문가가 세심하게 제작했으며 단일 질문과 답변 형식으로 구성되어 있습니다. 표 II는 도메인별 명령어 데이터 세트의 양을 보여줍니다. 방대한 양의 생성 채팅 명령어 데이터와 비교할 때 도메인별 명령어 데이터세트의 총 훈련 샘플 수가 상당히 적다는 점은 주목할 가치가 있습니다.
C. 자동 평가
다양한 모델의 정확성을 신속하고 정량적으로 평가하기 위해 우리는 MMLU[22]와 같이 확립된 벤치마크와 밀접하게 일치하도록 설계된 각 사용 사례에 대한 객관식 질문 및 답변 형식으로 구조화된 평가 기준을 설정했습니다. 이러한 객관식 문제를 공식화하는 과정에서 도메인 전문가와의 협업이 매우 중요했습니다. 목표는 각 질문에 최소한 하나의 복잡한 답변 선택이 포함되도록 하여 제한된 영역 전문 지식을 가진 개인에게 어려움을 주는 것이었습니다. 또한 도메인별 SFT의 데이터로 질문이 실수로 오염되는 것을 방지하기 위해 세심한 주의를 기울였습니다. 사용 사례별 벤치마크 외에도 아날로그 및 디지털 설계 주제를 모두 다루는 일반 회로 설계 지식에 대한 추가 벤치마크가 생성되었습니다. 평가 벤치마크의 객관식 문항 수는 표 III에 나와 있습니다.
위 벤치마크에 대한 결과를 보고할 때 테스트 프로세스의 분산 및 노이즈 효과를 완화하기 위해 5번의 개별 실행에서 얻은 평균 결과를 취합니다. 각 반복에는 5샷 예제 세트가 사용되며, 각 개별 실행에 변형이 도입됩니다.
이러한 도메인별 평가 벤치마크 외에도 일반적으로 사용되는 공개적으로 사용 가능한 LLM 학술 벤치마크도 포함되어 있습니다. 또한 Python의 경우 HumanEval [23], Verilog의 경우 VerilogEval [12]을 평가하여 모델의 코드 생성 기능을 측정합니다.
이 문서는 CC 4.0 라이선스에 따라 arxiv에서 볼 수 있습니다.