>기술 주변기기 >일체 포함 >소비자급 GPU는 1,760억 개의 매개변수를 사용하여 대규모 모델을 성공적으로 실행합니다.

소비자급 GPU는 1,760억 개의 매개변수를 사용하여 대규모 모델을 성공적으로 실행합니다.

WBOY
WBOY앞으로
2023-04-28 12:19:061225검색

소비자 GPU에서 대규모 모델을 실행하는 것은 기계 학습 커뮤니티가 직면한 과제입니다.

언어 모델의 크기가 점점 커지고 있습니다. PaLM에는 540B 매개변수가 있고 OPT, GPT-3 및 BLOOM에는 약 176B 매개변수가 있습니다. 모델은 여전히 ​​더 큰 방향으로 발전하고 있습니다.

소비자급 GPU는 1,760억 개의 매개변수를 사용하여 대규모 모델을 성공적으로 실행합니다.

​이러한 모델은 쉽게 접근할 수 있는 장치에서 실행하기 어렵습니다. 예를 들어, BLOOM-176B는 추론 작업을 완료하기 위해 8개의 80GB A100 GPU(각각 ~$15,000)에서 실행되어야 하는 반면, BLOOM-176B를 미세 조정하려면 그러한 GPU 72개가 필요합니다. PaLM과 같은 대규모 모델에는 더 많은 리소스가 필요합니다.

모델 성능을 유지하면서 이러한 모델의 리소스 요구 사항을 줄이는 방법을 찾아야 합니다. 모델 크기를 줄이기 위해 양자화 및 증류와 같은 다양한 기술이 현장에서 개발되었습니다.

BLOOM은 지난해 'BigScience'라는 프로젝트에서 1,000명이 넘는 자원봉사 연구원들이 참여하여 만들어졌습니다. 이 프로젝트는 프랑스 정부의 자금을 활용하여 인공지능 스타트업 Hugging Face가 운영하고 있으며 올해 7월 12일에 BLOOM 모델이 공식 출시되었습니다. .

Int8 추론을 사용하면 모델의 예측 성능을 저하시키지 않으면서 모델의 메모리 공간이 크게 줄어듭니다. 이를 기반으로 워싱턴 대학, Meta AI 연구소(구 Facebook AI Research) 및 기타 기관의 연구원들은 HuggingFace와 공동으로 연구를 수행하여 학습된 BLOOM-176B를 더 적은 GPU에서 실행되도록 시도했으며 제안된 방법은 완전히 통합되었습니다. HuggingFace Transformers로.

소비자급 GPU는 1,760억 개의 매개변수를 사용하여 대규모 모델을 성공적으로 실행합니다.

  • 논문 주소: https://arxiv.org/pdf/2208.07339.pdf
  • Github 주소: https://github.com/timdettmers/bitsandbytes

이 연구는 변환기입니다. 모델의 추론 성능에 영향을 주지 않는 최초의 10억 규모 Int8 양자화 프로세스를 제안했습니다. 16비트 또는 32비트 가중치를 갖는 175B 매개변수 변환기를 로드하고 피드포워드 및 주의 투영 레이어를 8비트로 변환할 수 있습니다. 완전한 정밀도 성능을 유지하면서 추론에 필요한 메모리를 절반으로 줄입니다.

이 연구에서는 벡터 양자화와 혼합 정밀도 분해의 조합을 LLM.int8()이라고 명명했습니다. 실험에 따르면 LLM.int8()을 사용하면 성능 저하 없이 소비자 GPU에서 최대 175B 매개변수의 LLM으로 추론을 수행할 수 있습니다. 이 접근 방식은 이상값이 모델 성능에 미치는 영향을 새롭게 조명할 뿐만 아니라 소비자급 GPU가 탑재된 단일 서버에서 OPT-175B/BLOOM과 같은 초대형 모델을 처음으로 사용할 수 있게 해줍니다.

소비자급 GPU는 1,760억 개의 매개변수를 사용하여 대규모 모델을 성공적으로 실행합니다.

방법 소개

기계 학습 모델의 크기는 매개변수 수와 정밀도에 따라 달라지며 일반적으로 float32, float16 또는 bfloat16 중 하나입니다. float32(FP32)는 표준화된 IEEE 32비트 부동 소수점 표현을 나타내며, 이 데이터 유형을 사용하여 광범위한 부동 소수점 숫자를 표현할 수 있습니다. FP32는 "지수"용으로 8비트, "가수"용으로 23비트, 숫자 부호용으로 1비트를 예약합니다. 또한 대부분의 하드웨어는 FP32 작업 및 지침을 지원합니다.

그리고 float16(FP16)은 지수용으로 5비트, 가수용으로 10비트를 예약합니다. 이로 인해 FP16 숫자의 표현 가능한 범위가 FP32보다 훨씬 낮아져 오버플로(매우 큰 숫자를 나타내려고 함) 및 언더플로(매우 작은 숫자를 나타냄) 위험에 노출됩니다.

오버플로가 발생하면 NaN(숫자가 아님) 결과가 나오며, 신경망처럼 순차 계산을 수행하면 많은 작업이 무너집니다. bfloat16(BF16)은 이 문제를 방지합니다. BF16은 지수용으로 8비트, 소수용으로 7비트를 예약합니다. 이는 BF16이 FP32와 동일한 동적 범위를 유지할 수 있음을 의미합니다.

이상적으로는 훈련과 추론이 FP32에서 이루어져야 하지만 FP16/BF16에 비해 속도가 느리기 때문에 훈련 속도를 높이려면 혼합 정밀도를 사용하세요. 그러나 실제로 반정밀도 가중치는 추론 중에 FP32와 유사한 품질을 제공합니다. 이는 동일한 결과를 얻기 위해 정밀도 가중치의 절반을 사용하고 GPU의 절반을 사용할 수 있음을 의미합니다.

하지만 다른 데이터 유형을 사용하여 더 적은 메모리로 이러한 가중치를 저장할 수 있다면 어떨까요? 딥러닝에서는 양자화(Quantization)라는 방법이 널리 사용되어 왔습니다.

이 연구에서는 먼저 실험에서 4바이트 FP32 정밀도 대신 2바이트 BF16/FP16 반 정밀도를 사용하여 거의 동일한 추론 결과를 얻었습니다. 이런 식으로 모델이 절반으로 줄어듭니다. 하지만 이 숫자를 더 줄이면 정확도가 떨어지고 추론 품질도 급격히 떨어지게 됩니다.

이를 보완하기 위해 본 연구에서는 8비트 양자화를 도입합니다. 이 방법은 정밀도의 1/4을 사용하므로 모델 크기의 1/4만 필요하지만 나머지 절반의 비트를 제거해도 달성되지 않습니다.

소비자급 GPU는 1,760억 개의 매개변수를 사용하여 대규모 모델을 성공적으로 실행합니다.

가장 일반적인 두 가지 8비트 양자화 기술은 영점 양자화와 absmax(절대 최대값) 양자화입니다. 두 방법 모두 부동 소수점 값을 보다 컴팩트한 int8(1바이트) 값으로 매핑합니다.

예를 들어 영점 양자화에서 데이터 범위가 -1.0-1.0이고 -127-127로 양자화되면 확장 계수는 127입니다. 예를 들어 이 확장 계수에서는 값 0.3이 0.3*127 = 38.1로 확장됩니다. 양자화에는 일반적으로 반올림이 포함되어 38이 됩니다. 이를 반대로 하면 38/127=0.2992가 됩니다. 이 예에서는 양자화 오류가 0.008입니다. 겉으로는 작아 보이는 이러한 오류는 모델 레이어를 통해 전파되면서 누적되고 커지는 경향이 있으며 성능 저하를 유발합니다.

소비자급 GPU는 1,760억 개의 매개변수를 사용하여 대규모 모델을 성공적으로 실행합니다.

이러한 기술은 딥 러닝 모델을 정량화할 수 있지만 모델 정확도가 떨어지는 경우가 많습니다. 그러나 Hugging Face Transformers 및 Accelerate 라이브러리에 통합된 LLM.int8()은 BLOOM과 같은 176B 매개변수가 있는 대규모 모델의 경우에도 성능을 저하시키지 않는 최초의 기술입니다.

LLM.int8() 알고리즘은 다음과 같이 설명할 수 있습니다. 기본적으로 LLM.int8()은 세 단계로 행렬 곱셈 계산을 완료하려고 시도합니다.

  • 숨겨진 상태 임계값을 입력하세요).
  • FP16의 이상값과 int8의 비이상값의 행렬 곱셈입니다.
  • FP16에서 비이상값을 역양자화하고 이상값과 비이상값을 추가하여 완전한 결과를 얻습니다.

이 단계는 아래 애니메이션에 요약될 수 있습니다.

소비자급 GPU는 1,760억 개의 매개변수를 사용하여 대규모 모델을 성공적으로 실행합니다.

마지막으로 연구에서는 다음 질문도 살펴보았습니다. 네이티브 모델보다 빠릅니까?

LLM.int8() 메서드의 주요 목적은 성능 저하 없이 대형 모델에 더 쉽게 접근할 수 있도록 하는 것입니다. 그러나 너무 느리면 그다지 유용하지 않습니다. 연구팀은 여러 모델의 생성 속도를 벤치마킹한 결과 LLM.int8()이 포함된 BLOOM-176B가 fp16 버전보다 약 15%~23% 느리다는 사실을 발견했습니다. 이는 완전히 수용 가능한 수준입니다. T5-3B 및 T5-11B와 같은 소형 모델은 감속도가 훨씬 더 높습니다. 연구팀은 이러한 소형 모델의 속도를 향상시키기 위해 노력하고 있습니다.

소비자급 GPU는 1,760억 개의 매개변수를 사용하여 대규모 모델을 성공적으로 실행합니다.

위 내용은 소비자급 GPU는 1,760억 개의 매개변수를 사용하여 대규모 모델을 성공적으로 실행합니다.의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
이 기사는 51cto.com에서 복제됩니다. 침해가 있는 경우 admin@php.cn으로 문의하시기 바랍니다. 삭제