저자:
(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) 이스메트 베이락타로글루(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), 엔비디아.
컬렉션은 관련 설계 데이터 및 문서를 식별하고, 해당하는 경우 일반 텍스트로 변환하고, 기본 품질 측정항목을 사용하여 필터링하고, 정확한 파일 중복 제거를 위해 체크섬을 계산하고, 저장을 위해 압축하도록 설계된 일련의 셸 및 Python 스크립트로 구현되었습니다. 수집 흐름에서는 내부 데이터 소스(네트워크로 연결된 파일 시스템 및 내부 웹 애플리케이션 모두)의 현장 데이터 수집을 통해 공간 요구 사항을 최소화하는 것을 목표로 기성 LLM 관련 스크래핑 및 수집 스크립트를 사용하지 않았습니다. 파일 시스템 기반 수집의 경우 추가 원시 데이터 세트를 로컬에 저장하는 대신 품질을 위해 필터링되는 동안 데이터가 제자리에 유지되었습니다.
설계 및 검증 데이터 수집에는 Verilog 및 VHDL(RTL 및 넷리스트), C++, Spice, Tcl, 다양한 스크립팅 언어 및 빌드 관련 구성 파일을 포함한 다양한 소스 파일이 포함되었습니다. 내부 웹 서비스의 데이터는 REST API 호출과 기존 크롤링을 통해 수집되었으며, 두 경우 모두 오픈 소스 BeautifulSoup [52] Python 라이브러리를 사용하여 HTML 형식을 제거하여 더 많은 보일러를 도입하는 대신 실수로 코딩 예제를 제거하는 것을 최소화했습니다. 플레이트 탐색 표시줄 및 기타 HTML 페이지 요소. 우리의 데이터 수집 흐름은 쉽게 사용할 수 있는 Python 변환 라이브러리와 오픈 소스 도구를 사용하여 .docx, .pptx 및 .pdf를 포함한 기존 문서 형식을 지원했습니다.
대부분의 내부 데이터는 고품질이라고 생각되므로 최소한의 필터링이 적용되었습니다. 라인 수 필터링을 사용하여 지나치게 크거나 작은 파일을 제외하고 파일을 수동으로 작성된 파일과 도구로 생성한 파일의 광범위한 범주로 분류했습니다.
이 섹션에서는 도메인 적응형 사전 학습 모델에 대한 자세한 결과를 제시합니다. 또한 도메인 적응형 사전 훈련에 대한 절제 실험을 자세히 설명합니다.
DAPT 하이퍼파라미터: 자세한 내용은 표 VI에 나와 있습니다.
자동 평가 결과: 표 VII 및 표 VIII에 자동 평가 벤치마크에 대한 자세한 결과를 제시합니다. 단순화를 위해 섹션의 나머지 부분에서는 절제 연구에 대한 집계된 벤치마크 결과를 제시합니다.
• 칩 : 표 III(5개 샷)의 도메인 내 디자인, 스크립팅, 버그 및 회로 벤치마크에 대한 평균 결과를 보고합니다.
• MMLU: 다양한 주제에 대한 인기 집계 벤치마크인 MMLU(5샷)[22]에 대한 전반적인 결과를 보고합니다.
• 추론 : Winogrande [53], hellaswag [54], ARC-easy [55] 및 RACE-High [56]를 포함하여 상식 추론(0-shot)에 대한 인기 있는 공개 벤치마크에 대한 평균 결과를 보고합니다.
• 코드 : HumanEval [23], VerilogEval-Machine [12] 및 VerilogEval-Human [12]을 포함하여 그리디 디코딩을 사용하는 코딩 벤치마크의 평균 합격률을 보고합니다.
토크나이저 확장: 섹션 III-A에 설명된 대로 원래 LLaMA2 토크나이저와 증강된 토크나이저를 사용하여 DAPT를 실험했습니다. 그림 11은 수정되지 않은 원래 토크나이저를 사용하여 ChipNeMo의 평활화된 훈련 손실을 보여줍니다. 그림 2와 비교하면, 기초 모델 사전 훈련 중에 추가된 토큰이 관찰되지 않기 때문에 증강된 토크나이저가 초기화 시 훈련 손실이 더 크다는 것을 알 수 있습니다. 1 에포크의 DAPT에 대해서도 유사한 훈련 손실이 달성됩니다.
표 IX는 집계된 자동 평가 벤치마크 결과를 나타냅니다. 신중한 토크나이저 확대 및 가중치 초기화는 일반 학술 벤치마크의 모델 성능에 약간만 영향을 미칩니다. DAPT는 Verilog 코딩을 포함한 모든 토크나이저를 사용하여 도메인 벤치마크를 크게 개선했습니다(HumanEval에서는 큰 차이 없음). 우리는 토크나이저를 강화하면 모델의 일반 언어 및 도메인 기능이 저하되지 않고 토크나이저가 향상되고 교육 효율성이 향상된다는 결론을 내렸습니다.
공개 데이터 세트 혼합: 섹션 II-A에 소개된 대로 우리는 기초 모델 사전 훈련을 위해 일반적으로 사용되는 공개 데이터 세트에서 샘플링한 공개 데이터를 DAPT에 포함했습니다. 우리는 주로 DAPT에서 Wikipedia와 같은 공개 데이터를 혼합하면 토크나이저 증강으로 인한 장애를 "수정"하고 일반적인 자연어 기능을 향상시키는 데 도움이 될 수 있기를 바랐습니다.
모델의. 우리는 도메인 데이터만 사용하여 토크나이저 확장을 통해 또 다른 DAPT 라운드를 수행했으며, 대략 1.1 시대의 데이터에 해당하는 동일한 단계 수에 대해 교육했습니다. 우리는 공개 데이터 혼합이 결과를 약간 향상시키는 것으로 나타났습니다. 자세한 결과는 표 X에 제시되어 있습니다.
그림 12는 공개 데이터세트 믹스인을 포함하여 증강된 토크나이저를 사용한 ChipNeMo-7B의 훈련 손실을 보여줍니다. 우리는 7B 모델의 최종 훈련 손실이 13B 원래 DAPT 하이퍼파라미터보다 더 나은 초기 훈련 단계에서 훈련 손실이 크게 급증하는 것을 관찰했습니다. 그러나 우리는 도메인 내 칩 설계를 포함하여 표 XII에 표시된 것처럼 자연어 벤치마크 전반에 걸쳐 상당한 성능 저하를 확인했습니다. [32]의 결과와 일치하여 코딩 기능이 향상되었습니다.
우리는 우리의 사례가 [32]의 사례와 다르다는 점을 강조합니다. 사전 훈련된 체크포인트에서 초기화하는 "지속적인 사전 훈련"도 수행하지만 모델이 일반 기능에 대해 높은 수준의 성능을 유지하는 것이 바람직합니다.
도메인 데이터세트 정보와 지식(모델 사전 훈련에서는 볼 수 없음)을 모델 가중치로 추출합니다. 대조적으로, [32]는 자연어 요소가 주로 부족한 공개적으로 사용 가능한 코드 데이터를 사용하여 코딩 관련 작업에 중점을 둡니다. 우리는 더 작은 학습률이 도메인 적응을 위한 이중 역할을 하여 기본 모델에서 너무 멀지 않은 균형을 유지하면서 DAPT를 통한 도메인 지식의 증류를 촉진하여 일반적인 자연어 기능을 유지하면서 성능을 크게 향상시키는 역할을 한다고 가정합니다. -도메인 작업
PEFT(Parameter Efficient Fine-Tuning): 매개변수 효율적인 미세 조정은 사전 훈련된 모델 가중치를 동결하고 다운스트림 작업의 효율적인 미세 조정을 위해 더 작은 어댑터 모델에 훈련 가능한 매개변수를 주입합니다. LoRA(Low-Rank Adaptation)를 사용하여 DAPT에서 PEFT 사용을 탐색합니다[16]. 변환기 레이어 구현은 KQV를 단일 프로젝션으로 융합하므로 각 Self Attention 레이어에 대한 단일 Low-Rank 프로젝션을 위한 LoRA 어댑터를 결합된 방식으로 추가합니다. 표 VI의 동일한 DAPT 훈련 설정을 사용하여 원래 LLaMA2 토크나이저로 LLaMA2-13B 모델을 실험합니다. 우리는 각각 2,640만 개(소형)와 2억 1,120만 개(대형)의 훈련 가능한 추가 매개변수를 도입하는 두 가지 실험을 실행했습니다.
그림 13은 LoRA 모델의 훈련 손실 곡선을 보여주고 전체 매개변수 훈련과 비교합니다. 두 LoRA 모델 모두 손실이 빠르게 수렴되어 특정 지점을 넘으면 감소가 멈춥니다. 표 XIII는 LoRA 모델에 대한 평가 결과를 보고합니다. 두 LoRA 모델 모두 도메인 내 칩 설계 작업에 대한 전체 매개변수 교육 성능이 크게 저하됩니다. LoRA 모델은 비DAPT 모델에 비해 칩 설계 작업이 향상되었으며, 더 큰 모델이 약간 더 나은(그러나 중요하지 않은) 결과를 나타냅니다.
훈련 샘플을 수동으로 생성하는 것은 많은 노력이 필요하므로 자동으로 생성하는 프로세스를 구현하기로 결정했습니다. 모델을 미세 조정하기 위해 대조 학습을 사용하고 있으므로 각 샘플에는 긍정적인 구절과 부정적인 구절이 모두 필요합니다. 특히 정확도를 최대화하려면 하드 네거티브가 필요합니다.
1) 데이터세트 샘플링 절차: 그림 14에서는 샘플을 생성하는 단계를 설명합니다.
• 1단계: 문서 코퍼스에서 무작위로 한 구절을 선택합니다.
• 2단계: 언어 모델(Vicuna)을 사용하여 해당 구절에서 유효한 쿼리 생성
• 3단계: 기존 검색 모델(문장 변환기)을 사용하여 각 구절이 잠재적인 하드 네거티브인 쿼리에 대한 문서 코퍼스에서 상위 N개 구절을 가져옵니다.
• 4단계: 가져온 구절 중 일부가 실제로 긍정적일 가능성이 있으므로 동일한 언어 모델을 사용하여 긍정적인 구절을 필터링합니다.
• 5단계: 필터링 과정을 거친 후에도 부정적인 구절이 충분하지 않으면 말뭉치에서 무작위로 구절을 보충합니다.
초기 연구를 위해 우리는 Vicuna [4]와 Sentence Transformer [33]를 사용했습니다. 그러나 상업적으로 실행 가능한 검색 모델을 생성하기 위해 각각 LLaMA2 [5] 및 BM25 [42]로 쉽게 대체될 수 있습니다.
2) 히트 품질 비교: 모든 히트가 동일하게 생성되는 것은 아닙니다. 아래 Spec 예시의 구절은 해당 질문에 명확하고 완전하게 대답합니다. Build 예제의 구절에 답이 포함되어 있습니다. 그러나 쿼리에 응답하려면 더 많은 컨텍스트가 필요합니다.
사양 예: 히트 통과가 쿼리에 명확하게 답변합니다.
빌드 예: 쿼리에 완전히 응답하려면 추가 정보가 필요합니다. 예: DL이란 무엇입니까? Arch-Build-Hotseat-XXX가 DL인지 어떻게 알 수 있나요?
D. 추가 평가 자료
표 XIV는 엔지니어링 보조 챗봇 애플리케이션의 모든 모델에 대한 평가 데이터를 보여줍니다.
표 XV는 EDA 스크립트 생성 작업에 대한 모든 모델의 평가 결과를 보여줍니다.
표 XVI는 버그 요약 및 분석 작업에 대한 모든 모델의 평가 결과를 보여줍니다.
1) 엔지니어링 보조 챗봇:
2) EDA 스크립트 생성: 일부 기능 이름과 명령이 난독화되었습니다.
3) 버그 요약 및 분석: 사용자 이름, 칩 이름 및 경로가 난독화되었습니다.
이 문서는 CC 4.0 라이선스에 따라 arxiv에서 볼 수 있습니다.