AIGC 시대, 클라우드 네이티브 MLOps 기반의 나만의 대형 모델 구축(2부)

디지털 혁신 과정에서 업데이트되고 반복적인 생산성 도구에 대한 기업의 요구를 충족하기 위해 Lingqueyun은 최근 기업이 AI 기술을 신속하게 구현하고 지능형 애플리케이션 및 서비스를 실현할 수 있도록 지원하는 Alauda MLOps 솔루션을 출시했습니다.


AIGC 빅 모델은 기업 혁신의 엔진이 되었습니다.

ChatGPT가 폭발적으로 증가함에 따라 점점 더 많은 사람들이 AI를 사용하여 일상 업무의 효율성과 품질을 개선하고 대화를 통해 필요한 텍스트 데이터 생성을 지원하는 것을 고려하고 있습니다. 데이터를 표로 요약하거나, 프롬프트에 따라 기사를 작성하거나, 전문 지식 질문 및 답변을 수행하는 등 적절한 프롬프트 엔지니어링을 통해 ChatGPT는 최상의 답변을 제공할 수 있으며 인간 작업의 일부를 대체할 수도 있습니다.

또한 AI가 생성하는 콘텐츠는 텍스트 데이터에 국한되지 않고 AI 페인팅(안정적 확산), 작곡(Amper Music), 영화 생성(Runway) 등의 도구도 포함된다. 이들은 AIGC( AI 생성 콘텐츠), 또한 많은 산업 분야에서 지속적으로 생산성을 향상시키고 있습니다.

Alauda MLOps는 기업이 자체 대규모 모델을 신속하게 구축할 수 있도록 지원합니다.


그러나 기업은 다음을 보장할 수 있기 때문에 위의 작업을 수행하기 위해 소유하고 관리하는 온프레미스 모델이 필요합니다.


·  보안 요소: 대화 중에 기업은 기업의 내부 데이터를 인터넷의 AI 모델에 보내고 싶지 않습니다.

·  기능 사용자 지정: 특정 시나리오에서 모델의 기능을 향상시키기 위해 자신의 데이터를 사용하기를 희망합니다(미세 조정).

·  콘텐츠 검토: 법률 및 규정의 요구 사항에 따라 입력 및 출력 콘텐츠에 대해 2차 필터링을 수행합니다.


그렇다면 이러한 시나리오에서 기업은 어떻게 이러한 모델을 신속하게 구축하고 사용자 정의할 수 있습니까? 답은 클라우드 네이티브 MLOps + 노출 모델을 사용하는 것입니다!


OpenAI의 소개에 따르면 ChatGPT/GPT-4와 같은 초대형 모델을 훈련할 때 Azure + MPI 대규모 GPU 컴퓨팅 클러스터를 사용합니다. 사설 클라우드 네이티브 환경에서 기업은 MLOps 도구 체인을 사용하여 수평으로 확장할 수 있는 대규모 기계 학습 컴퓨팅 성능을 가질 수도 있습니다. MLOps 플랫폼을 사용하면 다음과 같은 개선 사항을 얻을 수 있습니다.


대규모 사전 학습 모델의 학습 및 예측 프로세스에 더  적합합니다.

·  대형 모델에 대한 애플리케이션 임계값 감소: 사전 훈련된 대형 모델을 사용하기 위한 기본 제공 자습서 프로세스, 한 단계로 시작;

·  완벽한 기존 머신 러닝 및 딥 러닝 플랫폼;

·  파이프라인 + 스케줄러를 사용하여 대규모 분산 교육 작업을 균일하게 배열하고 DDP, 파이프라인, ZERo, FSDP를 포함한 다양한 분산 교육 방법 및 프레임워크 사용자 지정을 지원합니다.

프로세스  사용자 지정: 실제 비즈니스에 따라 MLOps 도구 체인의 하위 집합을 선택하여 적합한 비즈니스 프로세스를 구축합니다.

·  완벽한 MLOps 플랫폼: 원활하고 완전한 MLOps 도구 체인을 제공합니다.


다음으로 Alauda MLOps 플랫폼을 예로 들어 LLaMa 사전 학습 모델의 채팅 모델(lora)을 기반으로 자신만의 "ChatGPT"를 구축하고 LLM 대화 모델을 사용자 정의하고 시작하는 방법을 소개합니다.


또한 다른 HuggingFace 사전 훈련 모델을 사용하여 Vicuna, MPT 및 기타 모델과 같은 자신만의 모델을 빠르게 구축할 수도 있습니다.


· 획득 방법 ·

엔터프라이즈 MLOps:

https://www.alauda.cn/open/detail/id/740.html

MLOps의 오픈 소스 버전:

https://github.com/alauda/kubeflow-chart

클라우드 네이티브 MLOps에서 대규모 사전 채팅 모델의 사용자 지정 및 배포를 완료하는 방법은 무엇입니까?

먼저 노트북 환경을 시작하고 여기에 필요한 GPU 리소스를 할당해야 합니다(실제 측정에 따르면 alpaca 7b 반정밀도 모델을 학습하려면 K80 4개 또는 4090 1개와 충분한 메모리 크기가 필요합니다).


 


 

그런 다음 github 및 hugging face에서 해당 코드 및 모델 파일을 준비해야 합니다.


·  프로젝트 다운로드: https://github.com/tloen/alpaca-lora, 그런 다음 노트북 파일 탐색 표시줄로 끌어다 놓습니다. 명령줄을 사용하여 Notebook에서 git clone 다운로드를 실행할 수도 있습니다.

·  언어 모델 사전 훈련 가중치 다운로드: https://huggingface.co/decapoda-research/llama-7b-hf, 끌어서 노트북에 업로드. git lfs clone을 사용하여 노트북에서 모델을 다운로드할 수도 있습니다.

·  lora 모델 사전 훈련 가중치 다운로드: https://huggingface.co/tloen/alpaca-lora-7b, 끌어서 노트북에 업로드. git lfs clone을 사용하여 노트북에서 모델을 다운로드할 수도 있습니다.


여기에 큰 모델을 업로드하려면 대기 시간이 오래 걸리므로 허깅페이스와의 네트워크 연결이 양호하면 노트북의 네트워크에서 직접 다운로드하도록 선택할 수 있습니다.


다음으로, 먼저 방금 다운로드한 사전 훈련된 모델을 사용하고, AI 대화 웹 애플리케이션을 시작하여 효과를 확인하고, 이러한 모델 파일을 읽기 위해 Notebook에서 사용하는 디스크를 마운트합니다.

그런 다음 위의 yaml 구성 또는 기본 애플리케이션 생성 양식을 사용하여 예측 서비스를 만들 수 있습니다. 추론 서비스는 하나의 K80 GPU만 사용하여 시작하면 됩니다.


여기서 사용하는 이미지는 다음 Dockerfile을 사용하여 빌드됩니다.


추론 서비스가 시작된 후 브라우저에서 방문하여 이 모델과 다양한 대화를 시도할 수 있습니다. alpaca-lora 모델은 중국어를 충분히 지원하지 않기 때문에 중국어가 입력될 수 있지만 대부분의 출력은 여전히 ​​영어입니다. 그러나 이 모델은 이미 어느 정도 더 나은 기능을 보여줍니다.


마지막으로 레이블이 지정된 자체 데이터를 사용하여 모델을 최적화하고 사용자 정의할 수 있습니다(미세 조정). alpaca-lora 프로젝트의 지침에 따라 다음 교육 데이터 형식을 참조하고 미세 조정 교육 데이터를 추가한 다음 교육을 시작합니다. 현재 모델 훈련은 모델에서 소수의 매개변수만 업데이트하며 기본 LLM(사전 훈련된 언어 모델) 매개변수는 LLM의 강력한 기본 기능을 유지하기 위해 업데이트되지 않습니다.


위는 Notebook에서 직접 학습한 내용으로, 학습 작업의 파이프라인이 점차 복잡해지면 학습용 Python 프로그램을 다음 파이프라인에 맞게 커스터마이즈하여 클러스터에 제출하여 운영할 수 있습니다. 작업이 다중 머신 다중 카드 + 모델 병렬 학습 프레임워크인 경우 MLOps를 기반으로 코드 수정 없이 프레임워크에 따라 학습 노드 수를 구성하고 Python 코드에서 해당 분산 컴퓨팅 코드를 구현할 수도 있습니다. 파이프라인 스케줄링.


위 내용은 노트북에서 직접 학습한 내용으로, 최대 1개의 물리 노드에 있는 모든 GPU 카드만 사용할 수 있습니다. 교육 작업에 물리적 노드에 분산된 교육이 필요한 경우 교육 Python 프로그램을 다음 파이프라인에 빌드하고 작동을 위해 클러스터에 제출할 수 있습니다.


MLOps는 작업 파이프라인에서 직접 분산 학습 단계 빌드를 지원합니다. Kubeflow Training Operator와 달리 이 모드에서는 사용자가 Kubernetes에서 학습된 TFJob, PytorchJob의 YAML 구성 파일 및 Python 프로그램을 워크플로로 드래그 앤 드롭한 후 정의해야 합니다. 이 노드의 병렬성은 개별적으로, 즉 파이프라인의 ParallelFor 프리미티브로 설정할 수 있습니다. 이러한 방식으로 데이터 병렬 처리(DDP), 파이프라인 병렬 처리(PipelineParallel), FSDP 또는 기타 분산 교육 방법은 물론 트랜스포머, 가속화와 같은 프레임워크를 사용하여 수행되는 교육을 파이프라인 내에서 사용자 정의할 수 있습니다.

또한 MLOps 플랫폼에 구축된 분산 학습 파이프라인은 Volcano 스케줄러를 사용하여 GPU 및 Pod의 스케줄링을 완료하도록 선택하여 서로 리소스를 점유하는 여러 작업으로 인한 리소스 낭비를 방지할 수 있습니다.

이와 같이 Python 코드를 드래그 앤 드롭한 후 이 작업의 병렬성, 각 노드에서 필요한 CPU, 메모리, 그래픽 카드 리소스 및 런타임 이미지를 구성한 다음 "Submit to run"을 클릭합니다. 인터페이스의 버튼을 눌러 작업을 시작하고 작업의 실행 상태를 확인하십시오.


미세 조정 교육을 완료한 후 위 단계를 참조하여 새 모델을 사용하여 추론 서비스를 시작하고 검증을 시작할 수 있습니다. 이 시점에서 당신은 이미 당신만의 "ChatGPT"를 가지고 있습니다! ! !


물론 현재 7b(70억개의 파라미터 스케일을 가진 모델)가 한계를 느낀다면 13B, 30B, 65B 등 더 큰 모델을 시도하거나 알파카가 아닌 다른 모델 구조를 사용할 수도 있습니다. 다음과 같은 로라:


tiiuae/falcon-40b · 포옹하는 얼굴

lmsys/vicuna-13b-delta-v1.1 · 포옹하는 얼굴

https://huggingface.co/mosaicml/mpt-7b-chat

https://github.com/ymcui/Chinese-LLaMA-Alpaca

https://huggingface.co/THUDM/chatglm-6b


또한 향후 버전(아래 그림 참조)에서 대형 모델에 대한 보다 원활한 교육 및 예측 방법을 지원할 예정이므로 제 시간에 업데이트에 주의를 기울이십시오.


이러한 공개 모델의 기능을 확인하거나 나만의 ChatGPT를 만들고 싶다면 클라우드 네이티브 MLOps 플랫폼의 도움을 받으세요~

이전: AIGC 시대, 클라우드 네이티브 MLOps 기반의 나만의 대형 모델 구축(1부)

추천

출처blog.csdn.net/alauda_andy/article/details/131374095