1

我想根据英特尔Xeon系列CPU规格(内核、Gflop、缓存、频率等)训练llama3-8B型号

我已经为它准备了基本的数据集,但它并没有给出富有成效的结果。请建议我如何在没有RAG的情况下将如此复杂的数据引入模型。

数据集行示例:

“<|begin_of_text|><|start_header_id|>系统<|end_header_id |>英特尔处理器名称作为输入,您的任务是为输入处理器提供Giga Flops(浮点运算)、内核计数、基频和缓存的输出。CPU名称的前两位分别表示处理器系列(8铂金、6/5黄金、4银、3青铜)和第2代、第3代和第4代处理器。<|eot_id|><|start_header_id|>用户<|end_header_id|>英特尔至强白金8368处理器助理Intel Xeon Platinum 8368处理器的gigaflops:1094.4,Intel Xeon Platinum 8.368处理器的core_count:38,Intel Xeon Platinum8368处理器中的base_frequency:2.40 GHz,Intel Xeen Platinum-8368处理器中的cache_size:57M<|eot_id|>。"

以下是使用PEFT的Finetuning代码:

进口焊炬进口熊猫作为pd从trl导入SFTTrainer从sklearn.model_selection导入train_test_split从数据集导入load_dataset,dataset从peft进口(LoraConfig、,获取默认模型)从变压器进口(原因LM的自动模型,自动标记器,训练参数,位和字节配置,默认数据整理器,)从torch.utils.data导入DataLoader将torch.nn导入为nn导入操作系统df=pd.read_csv(“/sda/ak_cpu_prompt.csv”)#train_dataset,test_dataset=train_test_split(df,shuffle=True,test_size=0.1,random_state=42)#training_data=数据集.from_pandas(df=列车数据集)#testing_data=数据集.from_pandas(df=测试数据集)training_data=数据集.from_pandas(df=df)培训_数据.设置_格式(type=“火炬”,columns=[“输出”],设备=“cuda”,)prepained_model=“/sda/llama3/Meta-Lama-3-8B-Instruct-hf”bnb_config=位和字节配置(load_in_4bit=真,bnb_4bit_quant_type=“nf4”,bnb_4bit_compute_dtype=火炬.bfloat16,bnb_4bit_use_double_quant=真,)打印(“\n…正在加载模型…”)model=原因LM.from_pretrained的自动模型(预涂模型,配置=bnb_ config###设备映射=“自动”)#model.config.pretrainig_tp=1#为了更快的响应,权衡准确性打印(“….加载模型完成…\n”)标记器=自动标记器.from_pretrained(prepained_model,padding_side='left')tokenizer.pad_token=标记器.eos_token#tokenizer.padding_side=“右”打印(“…正在准备训练参数…”)#标记器.add_special_tokens({'pad_token':'[pad]'})training_arg_instance=训练参数(output_dir=“/sda/llama3/llama_3_adapters/cpu_model-0.1”,#在此处更改per_device_train_batch_size=4,gradient_acumulation_steps=1,prediction_loss_only=真,gradient_checkpointing=假,#evaluation_strategy=“steps”,#无评估数据集do_eval=False,#无评估数据集最大梯度形式=0.3,fp16=真,bf16=假,optim=“paged_adamw_32bit”,logging_ steps=10,learning_rate=2e-5,warmup_ratio=0.0,lr_scheduler_type=“余弦”,num_train_epochs=1,#每个模型都会更改save_strategy=“epoch”,)print(“…正在准备训练参数。完成…\n”)打印(“…正在准备lora配置…”)loracofig_instance=洛拉配置(task_type=“CAUSAL_LM”,reference_mode=假,r=16,use_rslora=正确,劳拉阿尔法=32,#lora_dropout=0.01,lora_dropout=0.05)打印(“…正在准备lora配置。完成…\n”)打印(“…初始化SFT训练器…”)模型=get_peft_model(模型,loracofig_instance)#设备=[0,1]#模型=get_peft_model(模型,loracofig_instance).到(设备)SFT_instance=SFT培训师(model=型号,train_dataset=训练数据,#eval_dataset=测试数据,dataset_text_field=“输出”,最大等效长度=2048,标记器=标记器,args=培训_参数实例,dataset_batch_size=1,neftune_noise_alpha=3,#data_collator=默认数据排序规则,填料=真,#peft_config=loracofig实例,#在模型中传递)打印(“…正在初始化SFT培训器。完成…\n”)model.resize_token_embeddings(len(标记器))培训师=SFT_instance打印(“开始培训…”)培训师培训()培训师.save_model()print(“训练完成,模型保存在:/sda/llama3/llama_3_adapters/cpu_Model-0.1”)#change here

我已经训练了1-20个时期,损失从1.1到0.35,但模型似乎没有学习到确切的数值。

0

重置为默认值

你的答案

单击“发布您的答案”,表示您同意我们的服务条款并确认您已阅读我们的隐私政策.