xTuring
Mistral, LLaMA, GPT-J 등과 같은 오픈 소스 LLM의 빠르고 효율적이며 간단한 미세 조정을 제공합니다. xTuring은 LLM을 자체 데이터 및 애플리케이션에 맞게 미세 조정하기 위한 사용하기 쉬운 인터페이스를 제공함으로써 LLM을 간단하게 구축, 수정 및 제어할 수 있도록 해줍니다. 전체 프로세스는 컴퓨터 내부나 프라이빗 클라우드에서 수행할 수 있으므로 데이터 개인정보 보호와 보안이 보장됩니다.
xTuring
사용하면 다음과 같은 일을 할 수 있습니다.
pip install xturing
from xturing . datasets import InstructionDataset
from xturing . models import BaseModel
# Load the dataset
instruction_dataset = InstructionDataset ( "./examples/models/llama/alpaca_data" )
# Initialize the model
model = BaseModel . create ( "llama_lora" )
# Finetune the model
model . finetune ( dataset = instruction_dataset )
# Perform inference
output = model . generate ( texts = [ "Why LLM models are becoming so important?" ])
print ( "Generated output by the model: {}" . format ( output ))
여기에서 데이터 폴더를 찾을 수 있습니다.
xTuring
라이브러리의 최신 개선 사항을 발표하게 되어 기쁘게 생각합니다.
LLaMA 2
통합 - 기성품 , INT8 정밀도의 기성품 , LoRA 미세 조정, INT8 정밀도의 LoRA 미세 조정 및 LoRA 미세 조정 등 다양한 구성으로 LLaMA 2
모델을 사용하고 미세 조정할 수 있습니다. GenericModel
래퍼를 사용하여 INT4 정밀도로 조정 하거나 xturing.models
의 Llama2
클래스를 사용하여 모델을 테스트하고 미세 조정할 수 있습니다. from xturing . models import Llama2
model = Llama2 ()
## or
from xturing . models import BaseModel
model = BaseModel . create ( 'llama2' )
Evaluation
- 이제 모든 데이터 세트에서 Causal Language Model
평가할 수 있습니다. 현재 지원되는 측정항목은 perplexity
입니다. # Make the necessary imports
from xturing . datasets import InstructionDataset
from xturing . models import BaseModel
# Load the desired dataset
dataset = InstructionDataset ( '../llama/alpaca_data' )
# Load the desired model
model = BaseModel . create ( 'gpt2' )
# Run the Evaluation of the model on the dataset
result = model . evaluate ( dataset )
# Print the result
print ( f"Perplexity of the evalution: { result } " )
INT4
Precision - 이제 GenericLoraKbitModel
사용하여 INT4 Precision
이 포함된 모든 LLM을 사용하고 미세 조정할 수 있습니다. # Make the necessary imports
from xturing . datasets import InstructionDataset
from xturing . models import GenericLoraKbitModel
# Load the desired dataset
dataset = InstructionDataset ( '../llama/alpaca_data' )
# Load the desired model for INT4 bit fine-tuning
model = GenericLoraKbitModel ( 'tiiuae/falcon-7b' )
# Run the fine-tuning
model . finetune ( dataset )
# Make the necessary imports
from xturing . models import BaseModel
# Initializes the model: quantize the model with weight-only algorithms
# and replace the linear with Itrex's qbits_linear kernel
model = BaseModel . create ( "llama2_int8" )
# Once the model has been quantized, do inferences directly
output = model . generate ( texts = [ "Why LLM models are becoming so important?" ])
print ( output )
# Make the necessary imports
from xturing . datasets import InstructionDataset
from xturing . models import GenericLoraKbitModel
# Load the desired dataset
dataset = InstructionDataset ( '../llama/alpaca_data' )
# Load the desired model for INT4 bit fine-tuning
model = GenericLoraKbitModel ( 'tiiuae/falcon-7b' )
# Generate outputs on desired prompts
outputs = model . generate ( dataset = dataset , batch_size = 10 )
응용 프로그램을 이해하려면 Llama LoRA INT4 작업 예제를 살펴보는 것이 좋습니다.
확장된 통찰력을 얻으려면 저장소에서 사용할 수 있는 GenericModel 작업 예제를 검토해 보세요.
$ xturing chat -m " <path-to-model-folder> "
from xturing . datasets import InstructionDataset
from xturing . models import BaseModel
from xturing . ui import Playground
dataset = InstructionDataset ( "./alpaca_data" )
model = BaseModel . create ( "<model_name>" )
model . finetune ( dataset = dataset )
model . save ( "llama_lora_finetuned" )
Playground (). launch () ## launches localhost UI
다음은 LLaMA 7B 모델에서 다양한 미세 조정 기술의 성능을 비교한 것입니다. 우리는 미세 조정을 위해 Alpaca 데이터 세트를 사용합니다. 데이터 세트에는 52K 명령어가 포함되어 있습니다.
하드웨어:
4xA100 40GB GPU, 335GB CPU RAM
미세 조정 매개변수:
{
'maximum sequence length' : 512 ,
'batch size' : 1 ,
}
LLaMA-7B | DeepSpeed + CPU 오프로딩 | LoRA + 딥스피드 | LoRA + DeepSpeed + CPU 오프로딩 |
---|---|---|---|
GPU | 33.5GB | 23.7GB | 21.9GB |
CPU | 190GB | 10.2GB | 14.9GB |
시간/에포크 | 21시간 | 20분 | 20분 |
하드웨어 사양, 메모리 소비 및 에포크당 시간에 대한 문제를 생성하여 다른 GPU에 대한 성능 결과를 제출하여 이에 기여하세요.
우리는 이미 기본으로 사용하거나 가지고 놀 수 있는 일부 모델을 미세 조정했습니다. 로드하는 방법은 다음과 같습니다.
from xturing . models import BaseModel
model = BaseModel . load ( "x/distilgpt2_lora_finetuned_alpaca" )
모델 | 데이터세트 | 길 |
---|---|---|
DistilGPT-2 LoRA | 알파카 | x/distilgpt2_lora_finetuned_alpaca |
라마 로라 | 알파카 | x/llama_lora_finetuned_alpaca |
다음은 xTuring
의 BaseModel
클래스와 이를 로드하기 위한 해당 키를 통해 지원되는 모든 모델 목록입니다.
모델 | 열쇠 |
---|---|
꽃 | 꽃 |
대뇌 | 대뇌 |
DistilGPT-2 | distilgpt2 |
팔콘-7B | 매 |
갤럭티카 | 은하계 |
GPT-J | gptj |
GPT-2 | gpt2 |
야마 | 야마 |
LlaMA2 | 라마2 |
OPT-1.3B | 고르다 |
위에서 언급한 내용은 LLM의 기본 변형입니다. 다음은 LoRA
, INT8
, INT8 + LoRA
및 INT4 + LoRA
버전을 가져오는 템플릿입니다.
버전 | 주형 |
---|---|
로라 | <모델_키>_lora |
INT8 | <모델_키>_int8 |
INT8 + LoRA | <model_key>_lora_int8 |
** 모델의 INT4+LoRA
버전을 로드하려면 xturing.models
에서 GenericLoraKbitModel
클래스를 사용해야 합니다. 사용 방법은 다음과 같습니다.
model = GenericLoraKbitModel ( '<model_path>' )
model_path
로컬 디렉토리나 facebook/opt-1.3b
와 같은 HuggingFace 라이브러리 모델로 대체될 수 있습니다.
LLaMA
, GPT-J
, GPT-2
, OPT
, Cerebras-GPT
, Galactica
및 Bloom
모델 지원 Generic model
래퍼 지원 Falcon-7B
모델 지원 질문이 있는 경우 이 저장소에 문제를 생성할 수 있습니다.
Discord 서버에 가입하여 #xturing
채널에서 토론을 시작할 수도 있습니다.
이 프로젝트는 Apache License 2.0에 따라 라이센스가 부여됩니다. 자세한 내용은 LICENSE 파일을 참조하세요.
빠르게 발전하는 분야의 오픈 소스 프로젝트로서 우리는 새로운 기능과 더 나은 문서를 포함한 모든 종류의 기여를 환영합니다. 참여 방법을 알아보려면 기여 가이드를 읽어보세요.