xTuring
提供对开源 LLM 的快速、高效且简单的微调,例如 Mistral、LLaMA、GPT-J 等。通过提供易于使用的界面来根据您自己的数据和应用程序微调 LLM,xTuring 使构建、修改和控制 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
集成- 您可以在不同的配置中使用和微调LLaMA 2
模型:现成的、现成的 INT8 精度、 LoRA 微调、 LoRA INT8 精度微调和LoRA 微调使用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 指令。
硬件:
4 个 A100 40GB GPU、335GB CPU 内存
微调参数:
{
'maximum sequence length' : 512 ,
'batch size' : 1 ,
}
拉马-7B | DeepSpeed + CPU 卸载 | LoRA + DeepSpeed | LoRA + DeepSpeed + CPU 卸载 |
---|---|---|---|
图形处理器 | 33.5GB | 23.7GB | 21.9GB |
中央处理器 | 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
类支持的所有模型及其相应的加载键的列表。
模型 | 钥匙 |
---|---|
盛开 | 盛开 |
大脑 | 大脑 |
蒸馏GPT-2 | 蒸馏GPT2 |
猎鹰7B | 鹘 |
卡拉狄加 | 卡拉狄加 |
GPT-J | 格普特吉 |
GPT-2 | 总蛋白2 |
骆驼 | 骆驼 |
拉玛2 | 骆驼2 |
OPT-1.3B | 选择 |
上述是法学硕士的基本变体。以下是获取LoRA
、 INT8
、 INT8 + LoRA
和INT4 + LoRA
版本的模板。
版本 | 模板 |
---|---|
洛拉 | <模型密钥>_lora |
INT8 | <模型键>_int8 |
INT8+LoRA | <模型密钥>_lora_int8 |
** 为了加载任何模型的INT4+LoRA
版本,您需要使用xturing.models
中的GenericLoraKbitModel
类。下面是如何使用它:
model = GenericLoraKbitModel ( '<model_path>' )
model_path
可以替换为您的本地目录或任何 HuggingFace 库模型,例如facebook/opt-1.3b
。
LLaMA
、 GPT-J
、 GPT-2
、 OPT
、 Cerebras-GPT
、 Galactica
和Bloom
模型Generic model
包装器Falcon-7B
型号如果您有任何疑问,可以在此存储库上创建问题。
您还可以加入我们的 Discord 服务器并在#xturing
频道中开始讨论。
该项目根据 Apache License 2.0 获得许可 - 有关详细信息,请参阅许可证文件。
作为快速发展领域的开源项目,我们欢迎各种贡献,包括新功能和更好的文档。请阅读我们的贡献指南,了解如何参与。