[읽어보기] [?HF Repo] [?웹 버전]
중국어 |
Yayi 대규모 모델은 수동으로 구축된 수백만 개의 고품질 도메인 데이터에 대한 지침을 미세 조정하여 얻습니다. 교육 데이터는 미디어 홍보, 여론 분석, 공공 보안, 금융 위험 제어 및 도시 거버넌스 등 5가지 주요 분야를 다루고 있습니다. 수백 가지의 자연어 교육 작업. 사전 학습 초기화 가중치부터 도메인 모델까지 Yayi 대형 모델의 반복 프로세스 중에 우리는 기본 중국어 기능과 도메인 분석 기능을 점차적으로 강화하고 여러 라운드의 대화와 일부 플러그인 기능을 추가했습니다. 동시에 수백 명의 사용자를 대상으로 한 내부 테스트 과정에서 지속적인 수동 피드백 최적화를 통해 모델 성능과 보안을 더욱 향상시켰습니다.
Yayi 대형 모델의 오픈 소스를 통해 우리는 사전 훈련된 중국 대형 모델 오픈 소스 커뮤니티의 발전을 촉진하기 위한 자체 노력에 기여할 것입니다. 오픈 소스를 통해 모든 파트너와 함께 Yayi 대형 모델 생태계를 구축할 것입니다.
뉴스: Yayi Large Model은 중국 다중 도메인 작업에 적합한 최신 사례를 탐색하기 위해 LLaMA 2를 기반으로 하는 중국 최적화 모델 버전을 오픈 소스로 공개했습니다.
모델명 | ?HF 모델 식별 | 주소 다운로드 |
---|---|---|
YAYI -7B | wenge-연구/ YAYI -7b | 모델 다운로드 |
YAYI -7B-라마2 | wenge-연구/ YAYI -7b-llama2 | 모델 다운로드 |
YAYI -13B-라마2 | wenge-연구/ YAYI -13b-llama2 | 모델 다운로드 |
git clone https://github.com/wenge-research/YAYI.git
cd YAYI
conda create --name YAYI python=3.8
conda activate YAYI
pip install -r requirements.txt
torch
및 transformers
버전은 권장 버전보다 낮지 않는 것이 좋습니다.
모델 가중치(버전 7b)는 Huggingface 모델 창고에서 오픈 소스로 제공되며, 다운로드하여 사용할 수 있습니다. 다음은 다운스트림 작업 추론을 위해 단순히 YAYI -7b
호출하는 샘플 코드입니다. 이는 A100/A800/3090과 같은 단일 GPU에서 실행될 수 있습니다. FP16 정밀 추론을 사용할 때 약 20GB의 비디오 메모리를 차지합니다.
from transformers import AutoTokenizer , AutoModelForCausalLM , GenerationConfig
import torch
YAYI _7b_path = "wenge-research/ YAYI -7b"
tokenizer = AutoTokenizer . from_pretrained ( YAYI _7b_path )
model = AutoModelForCausalLM . from_pretrained ( YAYI _7b_path , device_map = "auto" , torch_dtype = torch . bfloat16 )
prompt = "你好"
formatted_prompt = f"<|System|>: n A chat between a human and an AI assistant named YAYI . n YAYI is a helpful and harmless language model developed by Beijing Wenge Technology Co.,Ltd. n n <|Human|>: n { prompt } n n <| YAYI |>:"
inputs = tokenizer ( formatted_prompt , return_tensors = "pt" ). to ( model . device )
eos_token_id = tokenizer ( "<|End|>" ). input_ids [ 0 ]
generation_config = GenerationConfig (
eos_token_id = eos_token_id ,
pad_token_id = eos_token_id ,
do_sample = True ,
max_new_tokens = 100 ,
temperature = 0.3 ,
repetition_penalty = 1.1 ,
no_repeat_ngram_size = 0
)
response = model . generate ( ** inputs , generation_config = generation_config )
print ( tokenizer . decode ( response [ 0 ]))
모델 훈련 중에 특수 토큰 <|End|>
가 끝 문자로 추가되므로 eos_token_id
위 코드의 GenerationConfig
에서 끝 문자에 해당하는 토큰 ID로 설정됩니다. LlaMA2 명령 미세 조정 모델을 기반으로 한 추론 코드는 약간 다릅니다. 자세한 내용은 Huggingface 모델 웨어하우스의 해당 버전을 참조하세요.
이 프로젝트는 모델 학습을 위한 deepspeed
프레임워크를 기반으로 환경을 구성한 후 해당 스크립트를 실행하여 학습을 시작합니다. 명령 데이터의 전체 매개변수 미세 조정, 명령 데이터의 LoRA 미세 조정, 다라운드 대화 데이터의 전체 매개변수 미세 조정 및 다라운드 대화 데이터의 LoRA 미세 조정을 지원합니다.
데이터 형식 : Alpaca 프로젝트의 jsonline 데이터 형식을 채택한 data/ YAYI _train_example.json
을 참조하세요. 각 줄에는 "instruction"
, "input"
및 "output"
세 가지 필드로 구성된 하나의 json 데이터가 있습니다. 그 중 "instruction"
과 "input"
명령 입력이고, "output"
이 출력 응답이다.
작업 지침 : Yayi 대형 모델의 전체 매개변수 미세 조정을 시작하려면 다음 명령을 실행합니다. 이 명령은 단일 머신 멀티 카드 트레이닝을 지원합니다. 멀티 머신 및 멀티 카드 트레이닝을 구성해야 하는 경우 deepspeed 공식 문서를 참조하세요. 4*A100(80G) 이상의 하드웨어 구성을 사용하는 것이 좋습니다.
deepspeed --num_gpus=8
--module training.trainer
--data-path ./data/ YAYI _train_example.json
--input-model ./checkpoints/ YAYI -7b
--deepspeed ./config/deepspeed_zero2_bf16.json
--epochs 2
--local-output-dir ./checkpoints
--per-device-train-batch-size 8
--per-device-eval-batch-size 8
--logging-steps 1
--save-steps 100
--save-total-limit 10
--eval-steps 100
--warmup-steps 100
--test-size 400
--lr 5e-6
--seed 515
데이터 형식 : 위와 동일합니다. data/ YAYI _train_example.json
참고하세요.
작동 지침 : LoRA는 리소스가 적고 효율적인 미세 조정 방법이며, 단일 카드로 수백억 개의 매개변수 모델을 훈련할 수 있습니다. 이 프로젝트는 주로 peft
기반으로 LoRA 미세 조정을 구현합니다. Yayi 대형 모델의 LoRA 미세 조정을 시작하려면 다음 명령을 실행하십시오. 단일 카드 A100(80G)을 사용하여 미세 조정을 완료할 수 있으며 학습률을 더 큰 값으로 조정할 수 있습니다. 그 중 --lora-dim
업데이트 매트릭스의 순위를 설정하며, --lora-module-name
변경 가능한 LoRA 업데이트 매트릭스의 모듈을 설정합니다. 모델 유형에 따라.
deepspeed --num_gpus=1
--module training.trainer_lora
--data-path ./data/ YAYI _train_example.json
--input-model ./checkpoints/ YAYI -7b
--deepspeed ./config/deepspeed_zero2_bf16.json
--epochs 2
--local-output-dir ./checkpoints
--per-device-train-batch-size 8
--per-device-eval-batch-size 8
--logging-steps 1
--save-steps 100
--save-total-limit 10
--eval-steps 100
--warmup-steps 100
--test-size 400
--lr 5e-4
--seed 515
--lora-dim 16
--lora-module-name query_key_value
데이터 형식 : 표준 JSON 파일인 data/ YAYI _train_example_multi_rounds.json
을 참조하세요. 각 데이터는 "system"
과 "conversations"
로 구성됩니다. 여기서 "system"
은 전역 역할 설정 정보이며 빈 문자열일 수 있습니다. "conversations"
는 인간과 YAYI 두 캐릭터 사이의 다단계 대화입니다.
작업 지침 : Yayi 대형 모델의 전체 매개변수 미세 조정을 시작하려면 다음 명령을 실행합니다. 다중 라운드 대화 데이터의 경우 모델에서 생성된 응답 손실만 계산됩니다. 이 명령은 단일 머신 멀티 카드 트레이닝을 지원합니다. 멀티 머신 및 멀티 카드 트레이닝을 구성해야 하는 경우 deepspeed 공식 문서를 참조하세요. 4*A100(80G) 이상의 하드웨어 구성을 사용하는 것이 좋습니다.
deepspeed --num_gpus=8
--module training.trainer_multi_rounds
--data-path ./data/ YAYI _train_example_multi_rounds.json
--input-model ./checkpoints/ YAYI -7b
--deepspeed ./config/deepspeed_zero2_bf16.json
--epochs 2
--local-output-dir ./checkpoints
--per-device-train-batch-size 8
--per-device-eval-batch-size 8
--logging-steps 1
--save-steps 100
--save-total-limit 10
--eval-steps 100
--warmup-steps 100
--test-size 400
--lr 5e-7
--seed 515
data/ YAYI _train_example_multi_rounds.json
참고하세요.Yayi 대형 모델은 Zhongke Wenge의 백만 레벨 고품질 도메인 명령 미세 조정 데이터 세트를 기반으로 학습되었습니다. 이번에는 Huggingface 데이터 웨어하우스에서 다운로드할 수 있는 50,000개의 학습 데이터 세트를 공개합니다. 데이터 세트는 주로 금융, 보안, 여론, 미디어 등 여러 주요 분야를 다루고 있으며, 각 분야의 데이터를 구별하기 위해 각 분야의 대부분의 명령 데이터에 별도의 프롬프트 접두어를 추가했습니다. 또한 훈련 데이터에는 일부 보안 강화 데이터, 플러그인 기능 데이터, 다단계 대화 데이터 등도 포함됩니다.
현재 데이터와 기본 모델을 기반으로 훈련된 SFT 모델은 효율성 측면에서 여전히 다음과 같은 문제를 안고 있습니다.
위의 모델 제한 사항에 따라 개발자는 이 프로젝트에서 생성된 오픈 소스 코드, 데이터, 모델 및 후속 파생물을 연구 목적으로만 사용해야 하며 상업적 목적이나 사회에 해를 끼칠 수 있는 기타 용도로는 사용할 수 없습니다. 야이빅모델이 생성한 콘텐츠를 식별 및 이용하는데 주의해 주시고, 생성된 유해 콘텐츠를 인터넷에 유포하지 마시기 바랍니다. 불리한 결과가 발생할 경우, 책임은 전달자에게 있습니다.
본 프로젝트는 연구 목적으로만 사용될 수 있으며, 본 프로젝트의 이용으로 인해 발생하는 피해나 손실(데이터, 모델, 코드 등을 포함하되 이에 국한되지 않음)에 대해 프로젝트 개발자는 책임을 지지 않습니다. 자세한 내용은 면책 조항을 참조하십시오.
이 프로젝트의 코드는 Apache-2.0 프로토콜에 따른 오픈 소스이고 데이터는 CC BY-NC 4.0 프로토콜을 채택하며 YAYI 시리즈 모델 가중치를 사용하려면 모델 라이센스를 따라야 합니다.