max_seq_length = 2048 # 数据集的最大长度序列 trainer = SFTTrainer( model=model, train_dataset=dataset, peft_config=peft_config, max_seq_length=max_seq_length, tokenizer=tokenizer, packing=True, formatting_func=format_instruction, args=args, ) 通过调用Trainer实例上的train()方法来训练我们的模型。
max_seq_length:将max_seq_length设置为None允许我们不施加最大序列长度限制,我们不想截断或填充它们到固定长度,因此将max_seq_length设置为None允许我们使用数据中存在的全部序列长度。 packing:根据文档,ConstantLengthDataset使用这个参数来打包数据集的序列。在ConstantLengthDataset上下文中将packing设置为False可以在处理...
{"train": file_path}, split="train") dataset = dataset.map(formatting_prompts_func, batched = True,) trainer = SFTTrainer( model = model, tokenizer = tokenizer, train_dataset = dataset, dataset_text_field = "text", max_seq_length = max_seq_length, dataset_num_proc = 2, packing =...
dataset_path: "." # path to dataset max_seq_len: 3072 # 2048 # max sequence length for model and packing of the dataset # training parameters output_dir: "./llama-3-70b-hf-no-robot" # Temporary output directory for model checkpoints report_to: "tensorboard" # report metrics to tensor...
eos_token_id=tokenizer.eos_token_id,max_length=400, ) for seq in sequences: print (f"{seq ['generated_text']}") 步骤4:运行 Llama 现在,这个脚本已经可以运行了。保存脚本,回到 Conda 环境,输入 python < 脚本名称 >.py 并按回车键来运行脚本。
--max_seq_length 1024 \ --lora_r 16 --lora_alpha 32 \ --lora_target_modules q_proj k_proj v_proj o_proj \ --load_in_4bit \ --use_peft \ --attn_implementation "flash_attention_2" \ --logging_steps=10 \ --gradient_checkpointing \ ...
# Maximum sequence length. max_seq_length: 8192 # Use gradient checkpointing to reduce memory use. grad_checkpoint: true # LoRA parameters can only be specified in a config file lora_parameters: # The layer keys to apply LoRA to.
max_seq_length:将max_seq_length设置为None允许我们不施加最大序列长度限制,我们不想截断或填充它们到固定长度,因此将max_seq_length设置为None允许我们使用数据中存在的全部序列长度。 packing:根据文档,ConstantLengthDataset使用这个参数来打包数据集的序列。在ConstantLengthDataset上下文中将packing设置为False可以在处理...
max_seq_length = max_seq_length, dtype =None, load_in_4bit =True, ) # 后续流程和使用 transformers.Trainer 类似 transformers.Trainer 最后不得不提下大名鼎鼎的transformers库的Trainer,上述的很多工具其实也是在其基础上构建的。 Trainer本身是一个高度封装的类,但相比刚刚提到的工具,居然还有点偏底层了...
sequences = pipeline ('I have tomatoes, basil and cheese at home. What can I cook for dinner?\n',do_sample=True,top_k=10,num_return_sequences=1,eos_token_id=tokenizer.eos_token_id,max_length=400,)for seq in sequences:print (f"{seq ['generated_text']}") ...