ReplitLM 모델 제품군에 대한 가이드, 코드 및 구성입니다.
이는 우리 모델을 기반으로 사용하고 구축하는 더 많은 방법을 추가하기 위해 지속적으로 업데이트되고 있습니다.
모델 | 체크포인트 [CC BY-SA 4.0] | 어휘 [CC BY-SA 4.0] | 코드 [아파치 2.0] |
---|---|---|---|
복제 코드-v1-3b | 다운로드 링크 | 다운로드 | 레포 |
복제 코드-v1_5-3b | (출시 예정) | (출시 예정) | 출시 예정 |
2023년 5월 2일: replit-code-v1-3b
또한 모델을 직접 사용할 수 있는 replit-code-v1-3b
모델을 위한 GPU 기반 공간도 있습니다!
GPU 기반 호스팅 데모
출시된 모든 Replit 모델은 Replit 조직 페이지의 Hugging Face에서 사용할 수 있으며 Hugging Face Transformers 라이브러리와 함께 사용할 수 있습니다.
Hugging Face Transformers 라이브러리와 함께 Replit 모델을 사용할 수 있습니다. 출시된 각 모델의 README에는 Hugging Face Transformers와 함께 모델을 사용하는 방법에 대한 지침이 포함되어 있습니다. 토크나이저로 디코딩할 때 clean_up_tokenization_spaces=False
설정했는지 확인하고 README에 제공된 권장 사후 처리를 사용하세요.
모델 | 읽어보기 |
---|---|
복제 코드-v1-3b | 선적 서류 비치 |
mosaicML의 LLM Foundry 및 Composer를 사용하여 Replit 모델에 대한 추가 교육, 사전 교육 및 미세 조정을 권장합니다.
당사의 Replit 모델은 LLM Foundry와 호환되며 최첨단 교육 기술, 아키텍처 구성 요소, 최적화 프로그램 등을 사용하여 LLM Foundry + Composer를 사용하여 고도로 최적화된 방식으로 교육/조정할 수 있습니다. 모든 모델, LLM Foundry 및 Composer 교육 프레임워크는 Pytorch 기반입니다. 이를 사용하면 자신의 데이터 세트에서 Replit 모델을 훈련할 수 있습니다.
다음 단계는 각 단계에 필요한 LLM Foundry 문서 섹션에 대한 링크를 통해 모델을 교육하기 위해 수행해야 하는 작업에 대한 개요를 제공합니다.
LLM 파운드리 설치
LLM Foundry를 시작하려면 LLM Foundry README를 따라 다음을 수행할 수 있습니다.
상위 수준에서 LLM Foundry는 구성 YAML을 정의한 다음, composer train/train.py <configuration_yaml_path> <extra_args>
와 같은 명령을 사용하여 정의된 구성 yaml이 있는 LLM Foundry 저장소에서 train/train.py
교육 스크립트를 실행하여 사용됩니다. composer train/train.py <configuration_yaml_path> <extra_args>
. scripts/train/yamls 디렉토리에는 미세 조정 및 사전 유지를 위한 예제 YAML이 포함되어 있습니다.
복제 모델에 대한 기타 요구 사항 설치
그런 다음 requirements.txt
에 지정된 몇 가지 다른 종속성을 설치해야 합니다.
LLM Foundry를 사용하여 훈련하려면 데이터세트를 모자이크 StreamingDataset 형식으로 변환해야 합니다.
지원되는 데이터세트 소스 유형은 JSON 데이터세트와 포옹 얼굴 데이터세트입니다.
LLM Foundry의 데이터 준비 문서에는 이를 수행하는 방법에 대한 단계가 나와 있습니다.
위 단계에서 convert_dataset_hf.py
또는 convert_dataset_json.py
실행할 때 --tokenizer replit/replit-code-v1-3b
인수를 전달하여 Replit 토크나이저를 사용하고 있음을 지정해야 합니다. llm-foundry
의 현재 구현으로 인한 주요 단계는 토크나이저가 main()
메소드에 로드될 때 trust_remote_code=True
kwarg를 AutoTokenizer.from_pretrained
호출에 전달하여 scripts/data_prep/convert_dataset_hf.py
편집하는 것입니다.
변환된 데이터 세트 테스트
변환된 데이터세트를 테스트하고 데이터로더와 작동하는지 확인하려면 LLM Foundry 문서의 데이터로더 테스트 섹션을 따르세요.
LLM Foundry로 교육하려면 실행 구성 yaml을 정의해야 합니다. 이 yaml은 모델, 교육 데이터 세트, 평가 데이터 세트 및 측정항목, 교육 매개변수 등을 정의합니다.
복제 모델 사용
LLM Foundry를 사용하여 교육/조정하기 위해 정의한 구성 YAML의 경우 다음과 같이 YAML의 모델 및 토크나이저 키를 교체하여 Replit 모델을 연결하고 사용할 수 있습니다.
...
model:
name: hf_causal_lm
pretrained: true
pretrained_model_name_or_path: replit/replit-code-v1-3b
config_overrides:
attn_config:
attn_impl: triton
attn_uses_sequence_id: false
tokenizer:
name: replit/replit-code-v1-3b
kwargs:
model_max_length: ${max_seq_len}
trust_remote_code: true
...
그러면 구성에 맞게 Hugging Face의 가중치를 사용하여 모델이 로드됩니다.
데이터 세트를 변환하고 실행 구성 yaml을 정의한 후 LLM Foundry를 사용하여 교육을 실행할 수 있습니다.
교육을 실행하려면 LLM Foundry 문서의 교육 시작 방법 섹션을 따르세요. 이 섹션에서는 단일 노드 및 다중 노드 교육을 실행하는 방법을 보여줍니다. 효과적으로, composer train/train.py <configuration_yaml_path> <extra_args>
와 같은 명령을 사용하여 정의된 구성 yaml을 사용하여 LLM Foundry 저장소에서 scripts/train/train.py
교육 스크립트를 실행합니다.
Composer에는 체크포인트를 저장하기 위해 우회해야 하는 하드코딩된 로직이 있습니다. scripts/train/train.py
훈련 스크립트에서 모델이 초기화된 직후와 열차 데이터로더가 설정되기 전, 즉 작성 시점에서는 main()
의 147번째 줄에 model.tokenizer = None
줄을 추가합니다. 이는 체크포인트 상태로 토크나이저를 저장하지 않도록 효과적으로 보장합니다. 현재 Composer가 *.py
파일을 포함하는 토크나이저로 체크포인트 저장을 처리할 수 없기 때문에 이 해결 방법이 필요합니다.
자신의 사용 사례에 맞게 ReplitLM 모델을 지시 조정할 수 있습니다. 대부분의 지시 조정 사용 사례에서는 아래의 Hugging Face 예부터 시작하는 것이 좋습니다. 그렇지 않으면 LLM Foundry를 사용하여 명령어 튜닝을 수행하는 자세한 가이드도 제공합니다.
transformers
라이브러리를 사용하여 Alpaca 스타일 데이터세트에서 replit-code-v1-3b
모델을 지시 조정할 수 있습니다.
이를 달성하려면 다음과 같이 이미 Alpaca 스타일 형식으로 되어 있는 지시 튜닝 데이터세트가 필요합니다.
오픈 소스 기여자 Teknium은 원래 Alpaca 저장소를 우리 모델과 함께 실행되도록 사전 구성된 stanford_alpaca-replit 저장소로 포크했습니다. 이를 시작점으로 사용하는 것이 좋습니다.
저장소에는 트레이너를 설정하고 실행하는 방법에 대한 지침이 포함되어 있습니다. 필요한 Alpaca 스타일 데이터 세트 형식은 여기에 설명되어 있습니다. 알파카 스타일 형식의 모든 데이터 세트는 트레이너와 함께 작동합니다. 예를 들어, Code Alpaca 데이터 세트는 Teknium 저장소의 훈련 스크립트를 사용하여 모델 조정을 지시하는 데 사용될 수 있습니다.
LLM Foundry를 사용하여 명령어 튜닝을 수행할 수도 있습니다. 그렇게 하려면 필요에 따라 따라야 할 구체적인 세부 정보와 단계를 포함하여 개괄적으로 다음 단계를 수행해야 합니다.
LLM 파운드리 설치
LLM Foundry를 시작하려면 LLM Foundry README를 따라 다음을 수행할 수 있습니다.
상위 수준에서 LLM Foundry는 구성 YAML을 정의한 다음, composer train/train.py <configuration_yaml_path> <extra_args>
와 같은 명령을 사용하여 정의된 구성 yaml이 있는 LLM Foundry 저장소에서 train/train.py
교육 스크립트를 실행하여 사용됩니다. composer train/train.py <configuration_yaml_path> <extra_args>
. scripts/train/yamls 디렉토리에는 사전 설정과 미세 조정을 위한 예제 YAML이 포함되어 있습니다.
복제 모델에 대한 기타 요구 사항 설치
그런 다음 requirements.txt
에 지정된 몇 가지 다른 종속성을 설치해야 합니다.
다음 중 하나일 수 있습니다.
사용 중인 데이터 세트에 따라 LLM Foundry에서 예상하는 형식으로 데이터 세트의 형식을 지정해야 할 수도 있고 필요하지 않을 수도 있습니다.
맞춤 전처리가 필요하지 않은 데이터 세트
mosaicml/dolly_hhrlhf와 같은 일부 데이터세트에는 즉시 사용할 수 있는 전처리 기능이 이미 제공되어 있습니다. 게시 당시 다음 Hugging Face 데이터세트에는 사전 등록된 전처리 기능이 함께 제공되었습니다: HuggingFaceH4/databricks_dolly_15k
, Muennighoff/P3
, Muennighoff/flan
, bigscience/P3
, tatsu-lab/alpaca
.
맞춤형 전처리가 필요한 데이터세트
위의 데이터 세트를 사용하지 않는 경우 자체 전처리 함수를 작성하고 등록해야 합니다.
모든 데이터세트에 대해 다음 키가 포함된 사전 형식의 각 예시가 필요합니다.
formatted_example = { 'prompt' : < prompt_text > , 'response' : < response_text > }
즉, 각 샘플은 두 개의 키가 있는 사전입니다. 이는 finetuning
데이터 로더가 다운스트림으로 예상하는 형식입니다.
데이터 세트 형식 지정 가이드
원본 LLM Foundry 저장소의 데이터 형식화 섹션에서는 이를 수행하는 방법을 설명합니다.
데이터를 올바른 형식으로 가져오기 위해 사용자 정의 전처리 기능을 생성해야 하고 LLM Foundry 문서의 단계가 혼란스러운 경우 TL;DR을 다음과 같이 표현합니다.
preprocess.py
)을 생성합니다.prompt
및 response
포함된 사전을 반환하는 함수 preprocess_function()
정의합니다.preprocess.py
)과 함수(예: preprocess_function()
)를 가리킵니다. 이제 데이터 세트를 사용하여 Replit 모델을 미세 조정할 수 있습니다.
가이드
원본 LLM Foundry 저장소의 사용 섹션에서는 데이터 세트를 사용하고 Replit 모델을 미세 조정하는 방법을 설명합니다.
해당 섹션에서 옵션 1) 또는 2)를 사용하는 경우 이전 두 단계에서 수행한 작업을 기반으로 교육 YAML에서 train_loader
및 eval_loader
해당되는 경우)를 수정합니다. 옵션 3)(예: 스트리밍 데이터 세트)을 사용하는 경우 먼저 프롬프트 및 응답 키를 사용하여 데이터 세트를 올바른 형식으로 변환한 다음 이를 로컬 MDS 데이터 세트에 기록합니다. 그런 다음 이를 가리키도록 YAML을 수정할 수 있습니다.