paint-brush
LLM 구축을 위해 체크아웃할 오픈 소스 라이브러리~에 의해@chawlaavi
434 판독값
434 판독값

LLM 구축을 위해 체크아웃할 오픈 소스 라이브러리

~에 의해 Avi Chawla10m2024/06/26
Read on Terminal Reader

너무 오래; 읽다

이 기사에서는 LLM 개발에 사용할 수 있는 최고의 라이브러리 중 일부를 프로젝트 라이프사이클에서의 특정 역할별로 분류하여 제시합니다.
featured image - LLM 구축을 위해 체크아웃할 오픈 소스 라이브러리
Avi Chawla HackerNoon profile picture
0-item
1-item

GPT-2(XL)에는 15억 개의 매개변수가 있으며 해당 매개변수는 16비트 정밀도로 최대 3GB의 메모리를 소비합니다.

그러나 30GB 메모리를 갖춘 단일 GPU에서는 거의 훈련할 수 없습니다.




이는 모델 메모리의 10배이며, 이것이 어떻게 가능한지 궁금할 것입니다.


이 기사의 초점은 LLM 메모리 소비가 아니지만( 그래도 그것에 대해 더 알고 싶다면 이것을 확인할 수 있습니다 ), 이 예는 LLM의 헤아릴 수 없는 규모와 메모리 요구 사항을 반영하는 데 도움이 되었습니다.


실제로 위의 예에서는 매개변수가 15억 개에 불과한 매우 작은 모델인 GPT-2(XL)를 고려했습니다.

다음은 GPT-2(XL)와 GPT-3의 크기 비교입니다. 그러면 어떤 일이 일어날지 상상할 수 있습니다.



LLM 교육이 일반 모델 교육과 크게 다른 점 중 하나는 이러한 모델이 보여주는 엄청난 규모로, 효율적으로 개발, 교육 및 배포하려면 상당한 컴퓨팅 리소스와 기술이 필요하다는 것입니다.


그렇기 때문에 일반적인 LLM 건물은 "교육"보다 "엔지니어링"에 훨씬 더 가깝습니다.


다행히 현재 우리는 초기 개발 및 교육부터 테스트, 평가, 배포 및 로깅에 이르기까지 LLM 프로젝트의 다양한 단계를 처리하도록 설계된 다양한 전문 라이브러리와 도구를 보유하고 있습니다.



이 기사에서는 위 그림과 같이 프로젝트 라이프사이클에서의 특정 역할별로 분류된 LLM 개발에 사용할 수 있는 최고의 라이브러리 중 일부를 제시합니다.


LLM 개발을 위한 많은 라이브러리와 도구가 있지만 우리는 목록을 상대적으로 간결하게 유지하기로 결정했으며 채택, 커뮤니티 지원, 신뢰성, 실용적인 유용성 등과 같은 요소를 기반으로 9개의 라이브러리를 최종 선정했습니다. 목차를 사용하여 더 자세히 알아보고 싶은 라이브러리로 이동하세요.


훈련 및 확장

현실 점검

#1) 메가트론-LM

#2) 딥스피드

#3) YaFSDP


테스트 및 평가

#1) 기스카드

#2) 작품 평가 하네스


배포 및 추론

#1) vLLM

#2) C번역2


벌채 반출

#1) 트루에라

#2) 심층 점검


훈련 및 확장


현실 점검

규모를 고려할 때 분산 학습(여러 GPU를 포함하는 교육 절차)이 LLM 교육의 최전선에 있습니다.

분산 학습을 활용하는 한 가지 확실한 방법은 여러 GPU에 데이터를 분산하고 각 장치에서 정방향 전달을 실행하고 기울기를 계산하는 것입니다.


데이터도 구조화되지 않을 수 있습니다. 구조화된 데이터는 단순화를 위해서만 표시됩니다.


이를 달성하기 위해 각 GPU는 모델 가중치 및 최적화 상태의 자체 복사본을 저장합니다.



그러나 가장 큰 문제는 이러한 모델이 거대하다는 것입니다. 각 GPU 장치에서 전체 모델을 복제하는 것은 사실상 불가능합니다.


또한 최적화 상태에서 소비하는 메모리는 어떻습니까? 우리는 아직 그것을 고려하지 않았습니다.


더 자세히 설명하자면, Adam 최적화 프로그램(가장 널리 사용되는 최적화 프로그램 중 하나)이 소비하는 메모리는 모델 가중치(32비트 정밀도 기준)의 두 배에 해당합니다.



어떻게든 그라디언트를 계산했다고 가정하면 다음 병목 현상은 모델 동기화를 위해 그라디언트를 다른 GPU로 전송하는 것입니다.


순진한 방법(아래 참조)은 하나의 GPU에서 다른 모든 GPU로 그라디언트를 전송하는 것을 포함하며 모든 전송은 모델 크기와 동일합니다.



물론 이를 최적화하는 방법도 있지만 이 규모에서는 현실적으로 불가능합니다.


이 문제를 해결하는 몇 가지 라이브러리는 다음과 같습니다.


#1) 메가트론-LM

Megatron은 기존 분산 학습의 한계를 해결하면서 대규모 변압기 모델을 훈련하기 위해 NVIDIA가 개발한 최적화 라이브러리입니다.


라이브러리는 모델 병렬성을 사용하여 수십억 개의 매개변수 LLM을 훈련할 수 있다고 주장합니다. 핵심 아이디어는 모델의 매개변수를 여러 GPU에 분산시키는 것입니다.


모델 병렬 처리는 데이터 병렬 처리와 결합될 수 있습니다(위 섹션에서 설명).


NVIDIA가 발표한 해당 논문에서는 512개의 NVIDIA GPU에서 최대 83억 개의 매개변수까지 변환기 기반 모델을 효율적으로 훈련했다고 언급했습니다.


솔직히 말하면 오늘날 모델의 규모를 고려하면 그다지 큰 규모는 아닙니다.


하지만 메가트론이 2019년(GPT-3 이전 시대)에 처음 출시됐고 당시에는 이 정도 규모의 모델을 만드는 것이 본질적으로 어려웠기 때문에 큰 성과로 여겨졌습니다.


실제로 2019년부터 Megatron의 몇 가지 버전이 더 제안되었습니다.


여기에서 시작하세요: 메가트론-LM GitHub .


#2) 딥스피드

DeepSpeed는 분산 학습의 문제점을 해결하기 위해 Microsoft에서 개발한 최적화 라이브러리입니다.


그만큼 원본 종이 ZeRO 알고리즘인 Zero Redundancy Optimizer를 제안했습니다.


위의 논의에서 분산 학습 설정에는 많은 중복성이 포함되었습니다.

  • 모든 GPU는 동일한 모델 가중치를 유지했습니다.

  • 모든 GPU는 최적화 프로그램의 복사본을 유지했습니다.

  • 모든 GPU는 동일한 차원의 최적화 상태 복사본을 저장했습니다.


ZeRO(Zero Redundancy Optimizer) 알고리즘은 이름에서 알 수 있듯이 모든 GPU 간에 최적화 프로그램의 가중치, 기울기 및 상태를 완전히 분할하여 이러한 중복성을 완전히 제거합니다.


이는 아래에 설명되어 있습니다.


기술적인 세부 사항을 다루지는 않겠지만, 이 현명한 아이디어를 통해 메모리 부하를 크게 줄이면서 학습 과정의 속도를 높일 수 있었습니다.


또한 N(GPU 수)만큼 최적화 단계의 속도를 높입니다.


논문에서는 ZeRO가 1조 매개변수 이상으로 확장할 수 있다고 주장합니다.


그러나 자체 실험에서 연구원들은 2020년 5월 12일 현재 세계에서 가장 큰 모델인 Turing-NLG 라는 17B 매개변수 모델을 구축했습니다.


여기에서 시작하세요: 딥스피드 GitHub .



2022년(GPT-3 이후)에는 NVIDIA(Megatron의 창시자)와 Microsoft(DeepSpeed의 창시자)가 협력하여 제안했습니다. 메가트론-딥스피드 .


그들은 이를 사용하여 GPT-3보다 3배 더 큰 530B 매개변수를 갖는 Megatron-Turing NLG를 구축했습니다.


LLM 개발 타임라인


#삼) YaFSDP

DeepSpeed는 매우 강력하지만 다양한 실제적인 한계도 가지고 있습니다.


예를 들어:

  1. DeepSpeed 구현은 통신 오버헤드와 NCCL 집단소통을 위한 도서관.

  2. 또한 DeepSpeed는 교육 파이프라인을 크게 변화시켜 버그가 발생할 수 있고 상당한 테스트가 필요할 수 있습니다.


YaFSDP는 향상된 버전인 새로운 데이터 병렬 처리 라이브러리입니다. FSDP (PyTorch의 프레임워크), 특히 LLM에 대한 최적화가 추가되었습니다.

간단히 말해서 FSDP 및 DeepSpeed와 비교하여 YaFSDP는 다음과 같습니다.

  • 레이어에 대한 메모리를 보다 효율적으로 동적으로 할당하여 주어진 시간에 필요한 양의 메모리만 사용되도록 합니다.
  • "양보 효과"를 제거하여 계산의 가동 중지 시간을 크게 줄입니다.
  • 샤딩 전에 여러 레이어 매개변수를 단일 대형 매개변수로 결합하여 통신 효율성과 확장성을 더욱 향상시키는 FlattenParameter 와 같은 기술을 활용합니다.
  • 훈련 파이프라인이 아닌 모델에만 영향을 주어 보다 사용자 친화적인 인터페이스를 유지합니다.
  • 그리고 더.


다음 표는 YaFSDP의 결과를 현재 기술과 비교합니다.


  • YaFSDP는 항상 현재 기술보다 성능이 뛰어납니다.
  • 많은 수의 GPU를 사용하여 YaFSDP는 훨씬 더 나은 속도 향상을 달성하며 이는 더 나은 확장성의 범위를 나타냅니다.


여기에서 시작하세요: YaFSDP GitHub .


테스트 및 평가

이것으로 훈련과 확장이 완료되었습니다. 다음 단계는 테스트와 평가입니다.


LLM을 평가할 때 본질적인 문제는 정확도, F1 점수, 회상 등과 같은 몇 가지 측정 항목을 기반으로 평가할 수 없다는 것입니다.


대신 유창성, 일관성, 사실적 정확성, 적대적 공격에 대한 견고성 등 다양한 차원에 걸쳐 평가해야 하며 이러한 평가는 주관적인 경우가 많습니다.


다양한 도구가 이를 수행하는 데 도움이 됩니다.

#1) 기스카드


Giskard는 LLM과 관련된 다음 문제를 감지하는 데 도움이 되는 오픈 소스 라이브러리입니다.

  • 환각
  • 오보
  • 유해
  • 고정관념
  • 개인정보 공개
  • 신속한 주사


PyTorch, TensorFlow, HuggingFace, Scikit-Learn, XGBoost 및 LangChain과 같은 모든 인기 프레임워크와 작동합니다. 또한 HuggingFace, Weights & Biases 및 MLFlow와 통합할 수도 있습니다.


여기에서 시작하세요: 기스카드 GitHub .


#2) 작품 평가 하네스

Evaluation Harness는 LLM에 강력한 평가 프로세스를 적용하는 또 다른 오픈 소스 도구입니다.


기본적으로 모델을 테스트할 벤치마크를 선택하고 이를 시스템에서 실행한 다음 결과를 받을 수 있습니다.

2024년 5월 현재 LLM에 대한 60개 이상의 표준 학술 벤치마크가 있으며 Giskard에서는 어려운 맞춤형 프롬프트 및 평가 지표를 쉽게 지원합니다.


몇 가지 일반적인 벤치마크는 다음과 같습니다.

  • 질문과 답변
  • 객관식 질문
  • 인간이 할 수 있는 것과 유사한 성별 편견에 대해 테스트하는 작업입니다.
  • 그리고 더.


여기에서 시작하세요: lm-평가-하네스 GitHub .


Truera 및 DeepChecks와 같은 몇 가지 도구가 더 있지만 엔드투엔드 평가 및 관찰 솔루션을 제공하기 때문에 훨씬 더 포괄적입니다. 마지막 섹션에서 이에 대해 다루겠습니다.


LLM 평가에 대해 더 자세히 알고 싶다면 다음 기사를 추천합니다. LLM 평가 기사 .



배포 및 추론

이를 통해 우리는 모델을 평가했으며 자신 있게 배포 단계로 옮겼습니다.



"배포"라고 할 때 모델을 클라우드로 푸시한다는 의미는 아닙니다. 누구나 그렇게 할 수 있습니다.


대신 비용 절감을 위해 추론 단계에서 효율성을 달성하는 것이 더 중요합니다.


#1) vLLM

vLLM은 아마도 LLM 추론 효율성을 높이는 최고의 오픈 소스 도구 중 하나일 것입니다.



간단히 말해서, vLLM은 새로운 주의 알고리즘을 사용하여 모델 성능을 저하시키지 않고 추론 속도를 높입니다.


결과에 따르면 모델 변경 없이 HuggingFace Transformer보다 최대 24배 더 높은 처리량을 제공할 수 있습니다.


결과적으로 LLM 서비스는 모든 사람에게 훨씬 더 저렴해졌습니다.


여기에서 시작하세요: vLLM GitHub .


#2) C번역2

CTranslate2는 Transformer 모델을 위한 또 다른 인기 있는 빠른 추론 엔진입니다.


간단히 말해서, 라이브러리는 다음과 같은 LLM에 대한 다양한 성능 최적화 기술을 구현합니다.

  • 가중치 양자화 : 양자화는 부동 소수점에서 int8 또는 int16과 같은 하위 비트 표현으로 가중치의 정밀도를 줄입니다. 이는 모델 크기와 메모리 공간을 크게 줄여 계산 속도를 높이고 전력 소비를 낮춥니다. 또한, 행렬 곱셈은 정밀도가 낮은 표현에서도 더 빠르게 실행됩니다.



  • 레이어 융합 : 이름에서 알 수 있듯이 레이어 융합은 추론 단계에서 여러 작업을 단일 작업으로 결합합니다. 정확한 기술은 이 문서에서 다루지 않지만 레이어를 병합하면 계산 단계 수가 줄어들어 각 레이어와 관련된 오버헤드가 줄어듭니다.
  • 일괄 재정렬 : 일괄 재정렬에는 하드웨어 리소스 사용을 최적화하기 위해 입력 배치를 구성하는 작업이 포함됩니다. 이 기술을 사용하면 비슷한 길이의 시퀀스를 함께 처리하여 패딩을 최소화하고 병렬 처리 효율성을 최대화할 수 있습니다.


기술을 사용하면 CPU와 GPU 모두에서 Transformer 모델의 메모리 사용량이 크게 가속화되고 줄어듭니다.


여기에서 시작하세요: CTranslate2 GitHub .


벌채 반출

모델은 확장, 테스트, 생산 및 배포되었으며 현재 사용자 요청을 처리하고 있습니다.


그러나 모델의 성능을 모니터링하고 동작을 추적하며 프로덕션 환경에서 예상대로 작동하는지 확인하려면 강력한 로깅 메커니즘을 갖추는 것이 필수적입니다.


이는 LLM뿐만 아니라 모든 실제 ML 모델에 적용됩니다.



LLM의 맥락에서 로그인하기 위한 몇 가지 필수 도구와 기술은 다음과 같습니다.


#1) 트루에라

Truera는 단순한 로깅 솔루션이 아닙니다.



대신 LLM 테스트 및 평가를 위한 추가 기능도 제공합니다.


이를 통해 생산 성능을 추적하고 환각과 같은 문제를 최소화하며 책임감 있는 AI 관행을 보장하는 도구를 제공하는 훨씬 더 포괄적인 관찰 솔루션이 됩니다.


다음은 몇 가지 주요 기능입니다.

  • LLM 관찰 가능성 : TruEra는 LLM 애플리케이션에 대한 상세한 관찰 가능성을 제공합니다. 사용자는 피드백 기능과 앱 추적을 사용하여 LLM 앱을 평가할 수 있으며, 이는 성능을 최적화하고 환각과 같은 위험을 최소화하는 데 도움이 됩니다.

  • 확장 가능한 모니터링 및 보고 : 이 플랫폼은 모델 성능, 입력 및 출력 측면에서 포괄적인 모니터링, 보고 및 경고를 제공합니다. 이 기능을 사용하면 고유한 AI 근본 원인 분석을 통해 모델 드리프트, 과적합 또는 편향과 같은 모든 문제를 신속하게 식별하고 해결할 수 있습니다.

  • [중요] TruLens : TruEra의 TruLens는 사용자가 LLM 앱을 테스트하고 추적할 수 있는 오픈 소스 라이브러리입니다.

  • 그리고 더.


TruEra의 가장 큰 장점 중 하나는 AWS SageMaker, Microsoft Azure, Vertex.ai 등과 같은 예측 모델 개발 솔루션을 포함하여 기존 AI 스택과 원활하게 통합할 수 있다는 것입니다.


또한 프라이빗 클라우드, AWS, Google 또는 Azure를 포함한 다양한 환경에서의 배포를 지원하고 높은 모델 볼륨에 맞게 확장됩니다.


여기에서 시작하세요: 트루에라 .


#2) 심층 점검


Deepchecks는 LLM 평가, 테스트 및 모니터링 솔루션을 제공하는 TruEra와 같은 또 다른 포괄적인 솔루션입니다.


그러나 라이브러리는 LLM에만 국한되지 않습니다. 대신 많은 데이터 과학자와 기계 학습 엔지니어는 다양한 도메인의 다양한 기계 학습 모델에 DeepCheck를 활용합니다.


즉, 평가 프레임워크는 앞서 논의한 도구인 Giskard만큼 포괄적이고 철저하지 않습니다.


여기에서 시작하세요: 심층 점검 .


이 기사를 간결하고 빠르게 작성하기를 원했기 때문에 모든 단일 도구를 다루지는 않았지만 90%의 사용 사례에 충분한 도구를 소개했습니다.


다음은 우리가 생략하기로 결정한 도구의 몇 가지 예입니다.

  • 훈련 및 확장: Fairscale.
  • 테스트 및 평가: TextAttack.
  • 서빙: 플로우이즈.
  • 로깅: 가중치 및 편향, MLFlow 등.


더 많은 도구 스택에 대해 더 자세히 알아보고 싶다면 다음을 확인하세요. Awesome-LLMOps 저장소 .


읽어 주셔서 감사합니다!