Lamini- 분석 Vidhya를 사용한 미세 조정 오픈 소스 LLM
최근에 대규모 언어 모델과 AI가 증가함에 따라 우리는 자연어 처리에서 수많은 발전을 보았습니다. 텍스트, 코드 및 이미지/비디오 생성과 같은 도메인의 모델은 인간과 유사한 추론 및 성능을 보관했습니다.이 모델은 일반적인 지식 기반 질문에서 예외적으로 잘 수행됩니다. GPT-4O, LLAMA 2, Claude 및 Gemini와 같은 모델은 공개적으로 사용 가능한 데이터 세트에 대해 교육을받습니다. 다양한 조직 과제에 더 유용 할 수있는 도메인 또는 과목 별 질문에 대답하지 못합니다.
미세 조정은 개발자와 비즈니스가 미리 훈련 된 모델을 도메인 관련 데이터 세트에 적응하고 훈련시키는 데 도움이되는 도메인 관련 쿼리의 높은 정확도와 일관성을 보관합니다. 미세 조정은 광범위한 컴퓨팅 리소스를 필요로하지 않고 모델의 성능을 향상시킵니다. 왜냐하면 미리 훈련 된 모델은 이미 방대한 공개 데이터에서 일반 텍스트를 배웠기 때문입니다.
이 블로그는 왜 Lamini 플랫폼을 사용하여 미리 훈련 된 모델을 미세 조정 해야하는지 검사합니다. 이를 통해 많은 계산 리소스를 사용하지 않고 모델을 미세 조정하고 평가할 수 있습니다.
그래서 시작합시다!
학습 목표
- Allamini를 사용하여 Tofine-Tune Open-Source LLM을 탐색합니다
- Lamini 사용 및 미세 조정 모델에 대한 지침을 찾으려면
- 미세 조정 모델의 엔드 투 엔드 프로세스에 대한 실습을 얻기 위해.
이 기사는 Thedata Science Blogathon의 일부로 출판되었습니다.
목차
- 학습 목표
- 큰 언어 모델 하나를 미세 조정 해야하는 이유는 무엇입니까?
- Lamini를 사용하여 오픈 소스 LLM을 미세 조정하는 방법은 무엇입니까?
- 데이터 준비
- 데이터 세트를 토큰 화하십시오
- 미세 조정 과정
- 환경 설정
- 로드 데이터 세트
- 미세 조정을위한 설정, 모델
- 결론
- 자주 묻는 질문
큰 언어 모델 하나를 미세 조정 해야하는 이유는 무엇입니까?
미리 훈련 된 모델은 컨텍스트 또는 도메인 별 지식이 부족할 가능성이 높은 방대한 일반 데이터에 대해 주로 교육됩니다. 미리 훈련 된 모델은 또한 환각과 부정확하고 일관성이없는 출력을 초래할 수 있습니다. Chatgpt, gemini 및 Bingchat과 같은 챗봇을 기반으로하는 가장 인기있는 대형 언어 모델은 미리 훈련 된 모델이 그러한 부정확성에 걸리기 쉽다는 것을 반복적으로 보여주었습니다. 이것은 미세 조정이 구조에 나오는 곳으로, 사전 훈련 된 LLM을 과목 별 과제 및 질문에 효과적으로 적응시키는 데 도움이 될 수 있습니다. 모델을 목표에 맞추는 다른 방법으로는 신속한 엔지니어링 및 소수의 신속한 엔지니어링이 있습니다.
그럼에도 불구하고 미세 조정은 성능 메트릭과 관련하여 성능이 뛰어납니다. 매개 변수 효율적인 미세 조정 및 낮은 적응 순위 미세 조정과 같은 방법은 모델 미세 조정을 더욱 향상 시켰으며 개발자가 더 나은 모델을 생성하는 데 도움이되었습니다. 큰 언어 모델 컨텍스트에서 미세 조정이 얼마나 잘 맞는지 살펴 보겠습니다.
# 미세 조정 데이터 세트를로드하십시오 filename = "lamini_docs.json" 습기_dataset_df = pd.read_json (filename, lines = true) 습득 _dataset_df # 파이썬 사전에로드하십시오 examples = 습기 _dataset_df.to_dict () # 미세 조정을 위해 샘플을 준비하십시오 예제에서 "질문"과 "답"이면 예제에서 : 텍스트 = 예제 [ "질문"] [0] 예제 [ "답"] [0] 예제의 elif "명령"및 "응답"예제 : 텍스트 = 예제 [ "명령"] [0] 예제 [ "응답"] [0] 예제의 elif "입력"및 예제의 "출력": 텍스트 = 예제 [ "입력"] [0] 예제 [ "출력"] [0] 또 다른: 텍스트 = 예제 [ "텍스트"] [0] # 프롬프트 템플릿을 사용하여 미세 조정을위한 튜닝 된 데이터 세트를 만듭니다. prompt_template_qa = "" "### 질문 : {질문} ### 답변: {답변}"""
위의 코드는 명령 튜닝이 프롬프트 템플릿을 사용하여 명령 튜닝을위한 데이터 세트를 준비하고 특정 데이터 세트의 모델을 미세 조정 함을 보여줍니다. 이러한 사용자 정의 데이터 세트를 사용하여 미리 훈련 된 모델을 특정 사용 사례에 미세 조정할 수 있습니다.
다음 섹션에서는 Lamini가 사용자 정의 데이터 세트에 대한 LLM (Large Language Model) (LLM)을 미세 조정하는 방법을 살펴 봅니다.
Allamini를 사용하여 오픈 소스 LLM을 미세 조정하는 방법은 무엇입니까?
Lamini 플랫폼을 통해 사용자는 많은 비용 및 하드웨어 설정 요구 사항없이 모델을 완벽하게 조정하고 배포 할 수 있습니다. Lamini는 사용자 편의성 및 모델 요구 사항으로 모델을 개발, 훈련, 조정, E 및 배포 할 수있는 엔드 투 엔드 스택을 제공합니다. Lamini는 자체 호스팅 GPU 컴퓨팅 네트워크를 제공하여 모델을 비용 효율적으로 훈련시킵니다.
Lamini 메모리 튜닝 도구 및 컴퓨팅 최적화는 비용을 제어하면서 높은 정확도로 모델을 교육하고 조정하는 데 도움이됩니다. 모델은 프라이빗 클라우드 또는 Lamini의 GPU 네트워크를 통해 어디서나 호스팅 할 수 있습니다. 다음으로 Lamini 플랫폼을 사용하여 LLMS (Lange Language Models)를 미세 조정하기위한 데이터를 준비하기위한 단계별 안내서를 볼 수 있습니다.
데이터 준비
일반적으로 미세 조정 작업을위한 데이터를 준비하기 위해 데이터 청소, 프로모션, 토큰 화 및 스토리지를위한 도메인 별 데이터 세트를 선택해야합니다. 데이터 세트를로드 한 후 명령 조정 된 데이터 세트로 변환하도록 전제로 처리합니다. 우리는 데이터 세트에서 각 샘플을 지시, 질문 및 답변 형식으로 포맷하여 사용 사례에 대해 더 잘 조정합니다. 여기에 주어진 링크를 사용하여 데이터 세트 소스를 확인하십시오. Lamini 플랫폼을 사용하여 훈련을위한 토큰 화를 조정하는 코드 예제 지침을 살펴 보겠습니다.
팬더를 PD로 가져옵니다 # 데이터 세트를로드하고 명령 데이터 세트로 저장하십시오. filename = "lamini_docs.json" 습기_dataset_df = pd.read_json (filename, lines = true) examples = 습기 _dataset_df.to_dict () 예제에서 "질문"과 "답"이면 예제에서 : 텍스트 = 예제 [ "질문"] [0] 예제 [ "답"] [0] 예제의 elif "명령"및 "응답"예제 : 텍스트 = 예제 [ "명령"] [0] 예제 [ "응답"] [0] 예제의 elif "입력"및 예제의 "출력": 텍스트 = 예제 [ "입력"] [0] 예제 [ "출력"] [0] 또 다른: 텍스트 = 예제 [ "텍스트"] [0] Prompt_template = "" "### 질문 : {질문} ### 답변:""" # 미세 조정 예제를 명령어 형식으로 저장하십시오 num_examples = len (예 [ "질문"]) FINETUNING_DATASET = [] IN 범위 (num_examples)의 경우 : 질문 = 예 [ "질문"] [i] 답 = 예제 [ "답"] [i] text_with_prompt_template = prompt_template.format (질문 = 질문) FINETUNING_DATASET.APPEND ({ "Question": Text_with_prompt_template, "답": 답변})
위의 예에서는 프롬프트 템플릿에 "질문"과 "답변"을 형식화하여 LLM을 훈련하기 전에 토큰 화 및 패딩을 위해 별도의 파일에 저장했습니다.
데이터 세트를 토큰 화하십시오
# 패딩 및 잘린 데이터 세트의 토큰 화 def tokenize_function (예) : 예제에서 "질문"과 "답"이면 예제에서 : 텍스트 = 예제 [ "질문"] [0] 예제 [ "답"] [0] 예제의 elif "입력"및 예제의 "출력": 텍스트 = 예제 [ "입력"] [0] 예제 [ "출력"] [0] 또 다른: 텍스트 = 예제 [ "텍스트"] [0] # 패딩 Tokenizer.pad_token = tokenizer.eos_token Tokenized_inputs = Tokenizer ( 텍스트, return_tensors = "np", 패딩 = true, )) max_length = min ( tokenized_inputs [ "input_ids"]. 모양 [1], 2048 )) # 텍스트의 잘림 tokenizer.truncation_side = "왼쪽" Tokenized_inputs = Tokenizer ( 텍스트, return_tensors = "np", 자르기 = true, max_length = max_length )) Tokenized_inputs를 반환하십시오
위의 코드는 데이터 세트 샘플을 패딩을위한 입력으로, 토큰 화와의 잘린 사전 처리 토큰 화 된 데이터 세트 샘플을 생성하여 미세 조정 된 모델을 미세 조정하는 데 사용할 수 있습니다. 데이터 세트가 준비되었으므로 Lamini 플랫폼을 사용하여 모델의 교육 및 평가를 살펴 보겠습니다.
미세 조정 과정
이제 명령 조정 형식으로 데이터 세트를 준비 했으므로 데이터 세트를 환경에로드하고 Lamini의 사용하기 쉬운 교육 기술을 사용하여 미리 훈련 된 LLM 모델을 미세 조정합니다.
환경 설정
Allamini를 사용하여 미세 조정 오픈 소스 셀을 시작하려면 먼저 코드 환경에 적합한 리소스와 라이브러리가 설치되어 있는지 확인해야합니다. GPU 자원이 충분한 적절한 기계를 가지고 있는지 확인하고 변압기, 데이터 세트, 횃불 및 팬더와 같은 필요한 라이브러리를 설치해야합니다. 일반적으로 환경 파일에서 API_URL 및 API_KEY와 같은 환경 변수를 안전하게로드해야합니다. dotenv와 같은 패키지를 사용하여 이러한 변수를로드 할 수 있습니다. 환경을 준비한 후에는 교육을 위해 데이터 세트와 모델을로드하십시오.
OS 가져 오기 Lamini Import Lamini에서 lamini.api_url = os.getenv ( "powerml__production__url") lamini.api_key = os.getenv ( "powerml__production__key") # 필요한 라이브러리를 가져와 환경 파일을로드하십시오 데이터 세트 가져 오기 Tempfile 가져 오기 가져 오기 로깅 무작위로 가져옵니다 가져 오기 구성 OS 가져 오기 Yaml 가져 오기 수입 시간 토치 수입 수입 변압기 팬더를 PD로 가져옵니다 JSONLINES 가져 오기 # 변압기 아키텍처 로딩 및 [[[ 유틸리티 수입 *에서 * 변압기에서 Autotokenizer를 가져옵니다 변압기에서 automodelforcausallm을 가져옵니다 트랜스포머로부터 수입 훈련 능력 변압기에서 automodelforcausallm을 가져옵니다 llama import BasicModelRunner에서 logger = logging.getLogger (__ name__) Global_Config = 없음
로드 데이터 세트
모니터링 및 디버깅을 위해 로깅을 설정 한 후 데이터 세트 또는 JSONLINES 및 PANDAS와 같은 기타 데이터 처리 라이브러리를 사용하여 데이터 세트를 준비하십시오. 데이터 세트를로드 한 후 교육 프로세스를위한 교육 구성으로 토큰 화기 및 모델을 설정합니다.
# 로컬 시스템 또는 HF 클라우드에서 데이터 세트를로드하십시오. DataSet_name = "lamini_docs.jsonl" DataSet_Path = f "/content/{dataSet_name}" use_hf = false # 데이터 세트 경로 DataSet_Path = "lamini/lamini_docs"
모델, 교육 구성 및 토큰 화기를 설정하십시오
다음으로, 우리는 Allamini,“Eleutherai/Pythia-70m”을 사용하여 개방형 소스 셀을 미세 조정하는 모델을 선택하고 Training_Config에서 구성을 정의하고 미리 훈련 된 모델 이름 및 데이터 세트 경로를 지정합니다. 우리는 모델의 토큰 화기로 자동 autokenizer를 초기화하고 패딩을 순회 엔지스 토큰으로 설정합니다. 그런 다음 데이터를 토큰 화하고 사용자 정의 기능 인 Tokenize_and_split_data를 사용하여 교육 및 테스트 데이터 세트로 나눕니다. 마지막으로 AutomodElforcausallm을 사용하여 기본 모델을 인스턴스화하여 인과 적 언어 모델링 작업을 수행 할 수 있습니다. 또한 아래 코드는 모델 미세 조정 프로세스에 대한 컴퓨팅 요구 사항을 설정합니다.
# 모델 이름 model_name = "Eleutheai/Pythia-70m" # 교육 구성 training_config = { "모델": { "pretrained_name": model_name, "max_length": 2048 }, "데이터 세트": { "use_hf": use_hf, "Path": DataSet_Path }, "Verbose": True } # 자동 토큰 화기 설정 Tokenizer = Autotokenizer.from_pretrained (model_name) Tokenizer.pad_token = tokenizer.eos_token Train_dataset, test_dataset = tokenize_and_split_data (training_config, tokenizer) # lamini에서 기준 모델을 설정합니다 base_model = lamini (model_name) # GPU 평행 device_count = torch.cuda.device_count () device_count> 0 인 경우 : logger.debug ( "GPU 장치 선택") Device = Torch.device ( "Cuda") 또 다른: logger.debug ( "CPU 장치 선택") Device = Torch.device ( "CPU")
미세 조정을위한 설정, 모델
마지막으로, 우리는 하이퍼 파라미터로 훈련 인수 매개 변수를 설정했습니다. 학습 속도, 에포크, 배치 크기, 출력 디렉토리, 평가 단계, SAV, 워밍업 단계, 평가 및 로깅 전략 등이 포함되어 사용자 정의 교육 데이터 세트를 미세 조정합니다.
max_steps = 3 # 훈련 된 모델 이름 trained_model_name = f "lamini_docs_ {max_steps} _steps" output_dir = trained_model_name training_args = trainingarguments ( # 학습 속도 Learning_rate = 1.0E-5, # 훈련 에포크 수 num_train_epochs = 1, # 최대 훈련 단계 (각 단계는 데이터 배치입니다) # -1이 아닌 경우 NUM_TRAIN_EPOCHS를 무시합니다 max_steps = max_steps, # 훈련을위한 배치 크기 per_device_train_batch_size = 1, # 모델 체크 포인트를 저장하는 디렉토리 output_dir = output_dir, # 기타 주장 Overwrite_output_dir = false, # 출력 디렉토리의 내용을 덮어 쓰십시오 disable_tqdm = false, # 진행률 막대를 비활성화합니다 eval_steps = 120, # 두 평가 사이의 업데이트 단계 수 Save_Steps = 120, # 이후 # 단계 모델이 저장되었습니다 Warmup_steps = 1, # 학습 속도 스케줄러를위한 워밍업 단계 수 PER_DEVICE_EVAL_BATCH_SIZE = 1, # 평가를위한 배치 크기 평가_strategy = "단계", logging_strategy = "단계", logging_steps = 1, 최적 = "Adafactor", gradient_accumulation_steps = 4, gradient_checkpointing = false, # 조기 정지를위한 매개 변수 load_best_model_at_end = true, save_total_limit = 1, metric_for_best_model = "Eval_Loss", great_is_better = false ))
교육 인수를 설정 한 후 시스템은 입력 크기 및 구배 축적 단계에 따라 모델의 플로팅 포인트 작업 (FLOP)을 계산합니다. 따라서 계산 부하에 대한 통찰력을 제공합니다. 또한 메모리 사용량을 평가하여 기가 바이트의 모델의 발자국을 추정합니다. 이러한 계산이 완료되면 트레이너는 기본 모델, 플롭, 총 교육 단계 및 준비된 데이터 세트를 교육 및 평가를위한 초기화합니다. 이 설정은 교육 프로세스를 최적화하고 자원 활용 모니터링을 가능하게하며, 대규모 모델 미세 조정을 효율적으로 처리하는 데 중요합니다. 교육이 끝나면 미세 조정 모델은 클라우드에 배포 할 준비가되어있어 사용자에게 API로 서비스를 제공합니다.
# 모델 매개 변수 model_flops = ( base_model.floating_point_ops ( { "input_ids": Torch.zeros ( (1, training_config [ "모델"] [ "max_length"]) )) } )) * training_args.gradient_accumulation_steps )) 인쇄 (base_model) print ( "메모리 풋 프린트", base_model.get_memory_footprint () / 1e9, "gb") print ( "flops", model_flops / 1e9, "gflops") # 트레이너를 설정하십시오 트레이너 = 트레이너 ( model = base_model, model_flops = model_flops, Total_steps = max_steps, args = training_args, train_dataset = train_dataset, eval_dataset = test_dataset, ))
결론
결론적으로,이 기사는 Lamini 플랫폼을 사용하여 LLM을 미세 조정해야 할 필요성을 이해하기위한 심층적 인 안내서를 제공합니다. 사용자 정의 데이터 세트 및 비즈니스 사용 사례 모델을 미세 조정 해야하는 이유와 Lamini 도구 사용의 이점에 대한 포괄적 인 개요를 제공합니다. 또한 Lamini의 도구와 함께 사용자 정의 데이터 세트와 LLM을 사용하여 모델을 미세 조정하기위한 단계별 안내서를 보았습니다. 블로그에서 중요한 테이크 아웃을 요약하겠습니다.
주요 테이크 아웃
- 신속한 엔지니어링 및 검색 증강 생성 방법에 대한 미세 조정 모델에는 학습이 필요합니다.
- 사용하기 쉬운 하드웨어 설정을위한 Lamini와 같은 플랫폼의 uutilization for up-use to hardware 설정 및 사용자 요구 사항에 서비스를 제공하기위한 미세 조정 된 모델을위한 배포 기술
- 우리는 미세 조정 작업을위한 데이터를 준비하고 광범위한 하이퍼 파라미터를 사용하여 기본 모델을 훈련시키기위한 파이프 라인을 설정하고 있습니다.
Github 의이 기사 뒤에있는 코드를 살펴보십시오.
이 기사에 표시된 미디어는 분석 Vidhya가 소유하지 않으며 저자의 재량에 따라 사용됩니다.
자주 묻는 질문
Q1. 내 모델을 미세 조정하는 방법은 무엇입니까?A. 미세 조정 프로세스는 컨텍스트 별 요구 사항, 데이터 세트 준비, 토큰 화 및 하드웨어 요구 사항, 교육 구성 및 교육 인수와 같은 교육 설정 설정으로 시작합니다. 결국 모델 개발을위한 교육 작업이 실행됩니다.
Q2. LLM의 미세 조정은 무엇을 의미합니까?A. LLM을 미세 조정한다는 것은 특정 사용자 정의 데이터 세트에서 기본 모델을 훈련하는 것을 의미합니다. 이는 유스 케이스 별 특정 쿼리에 대한 정확하고 컨텍스트 관련 출력을 생성합니다.
Q3. LLM 미세 조정의 Lamini는 무엇입니까?A. Lamini는 LLMS의 원활하고 효율적이며 비용 효율적인 개발을위한 통합 언어 모델 미세 조정, 추론 및 GPU 설정을 제공합니다.
위 내용은 Lamini- 분석 Vidhya를 사용한 미세 조정 오픈 소스 LLM의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

핫 AI 도구

Undresser.AI Undress
사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover
사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool
무료로 이미지를 벗다

Clothoff.io
AI 옷 제거제

Video Face Swap
완전히 무료인 AI 얼굴 교환 도구를 사용하여 모든 비디오의 얼굴을 쉽게 바꾸세요!

인기 기사

뜨거운 도구

메모장++7.3.1
사용하기 쉬운 무료 코드 편집기

SublimeText3 중국어 버전
중국어 버전, 사용하기 매우 쉽습니다.

스튜디오 13.0.1 보내기
강력한 PHP 통합 개발 환경

드림위버 CS6
시각적 웹 개발 도구

SublimeText3 Mac 버전
신 수준의 코드 편집 소프트웨어(SublimeText3)

뜨거운 주제











이 기사는 최고의 AI 아트 생성기를 검토하여 자신의 기능, 창의적인 프로젝트에 대한 적합성 및 가치에 대해 논의합니다. Midjourney를 전문가에게 최고의 가치로 강조하고 고품질의 사용자 정의 가능한 예술에 Dall-E 2를 추천합니다.

메타의 라마 3.2 : 멀티 모달 및 모바일 AI의 도약 Meta는 최근 AI에서 강력한 비전 기능과 모바일 장치에 최적화 된 가벼운 텍스트 모델을 특징으로하는 AI의 상당한 발전 인 Llama 3.2를 공개했습니다. 성공을 바탕으로 o

이 기사는 Chatgpt, Gemini 및 Claude와 같은 최고의 AI 챗봇을 비교하여 고유 한 기능, 사용자 정의 옵션 및 자연어 처리 및 신뢰성의 성능에 중점을 둡니다.

이 기사는 Grammarly, Jasper, Copy.ai, Writesonic 및 Rytr와 같은 최고의 AI 작문 조수에 대해 논의하여 콘텐츠 제작을위한 독특한 기능에 중점을 둡니다. Jasper는 SEO 최적화가 뛰어나고 AI 도구는 톤 구성을 유지하는 데 도움이된다고 주장합니다.

이번 주 AI 환경 : 발전의 회오리 바람, 윤리적 고려 사항 및 규제 토론. OpenAi, Google, Meta 및 Microsoft와 같은 주요 플레이어

Shopify CEO Tobi Lütke의 최근 메모는 AI 숙련도가 모든 직원에 대한 근본적인 기대를 대담하게 선언하여 회사 내에서 중요한 문화적 변화를 표시합니다. 이것은 도망가는 트렌드가 아닙니다. 그것은 p에 통합 된 새로운 운영 패러다임입니다

이봐, 코딩 닌자! 하루 동안 어떤 코딩 관련 작업을 계획 했습니까? 이 블로그에 더 자세히 살펴보기 전에, 나는 당신이 당신의 모든 코딩 관련 문제에 대해 생각하기를 원합니다. 완료? - ’

이 기사는 Google Cloud, Amazon Polly, Microsoft Azure, IBM Watson 및 Destript와 같은 최고의 AI 음성 생성기를 검토하여 기능, 음성 품질 및 다양한 요구에 대한 적합성에 중점을 둡니다.
