面向LLaMA-Factory的大模型网格搜索微调工具LLaMA-Factory-Grid-Funetuning-Tool
·
为解决LLaMA-Factory微调参数时需要多次运行不同参数YAML文件的命令,我们提供了一个面向LLaMA-Factory的大模型网格搜索微调工具,命名为LLaMA-Factory-Grid-Funetuning-Tool。
网格搜索调参方法
网格搜索调参方法是一种通过穷举地尝试不同的参数组合来找到最佳参数配置的方法。它像是在一个参数的取值范围上布满了网格点,然后逐个尝试每个网格点上的参数组合,最后找到性能最好的参数配置。
我们的方法主要分为两步:
- 通过网格参数和原yaml生成新yaml文件。
- 按顺序执行新的yaml文件。
算法思路
1、通过网格参数和原yaml生成新yaml文件
# 修改YAML文件中的参数
def modify_yaml(data, output_file):
num_train_epochs = [1,2]
gradient_accumulation_steps = [1,2]
for g in gradient_accumulation_steps:
for n in num_train_epochs:
# 设置属于你自己的所需要微调的网格搜索参数
data['num_train_epochs'] = n
data['gradient_accumulation_steps'] = g
# data['learning_rate'] = value
# data['cutoff_len'] = value
# 根据网络搜索参数产生需要执行的多个YAML文件
yaml_str = yaml.dump(data, sort_keys=False)
yaml_filename = output_file +str(n)+'_'+str(g)+'output.yaml'
with open(yaml_filename, 'w', encoding='utf-8') as file:
file.write(yaml_str)
# print('1')
return data
input_file = 'F:/Working/PMAIP/why/datasets/qwen2.5_3b_lora_sft.yaml' # 输入的YAML文件路径
output_file = 'F:/Working/PMAIP/why/datasets/yaml/trys/' # 输出的YAML文件路径
# 读取YAML文件
data = read_yaml(input_file)
# 修改参数,这里以修改名为"parameter"的参数为例
data = modify_yaml(data, output_file)
按顺序执行新的yaml文件
在运行这一步之前删除F:/Working/PMAIP/why/datasets/yaml/trys/文件夹下你不希望执行的参数YAML文件
def list_files(directory):
for root, dirs, files in os.walk(directory):
for file in files:
# full_file = os.path.join(root, file)
full_cmd = 'python '+root+'/'+file
full_cmd = 'llamafactory-cli train '+root+'/'+file
result = subprocess.run(full_cmd, shell=True, text=True, capture_output=True)
print(result.stdout)
print(full_cmd)
print("1")
# 使用函数
directory_to_list = '/home/ubuntu/githubs/LLaMA-Factory/examples/train_lora' # 替换为你想要遍历的目录路径
list_files(directory_to_list)
欢迎大家在代码基础上进行进一步修改,优化网格调参工具,详细的代码查看 LLaMA-Factory-Grid-Funetuning-Tool仓库
更多推荐


所有评论(0)