llama-factory 代码阅读

1. llama factory shell 脚本的参数有哪些?

### model
model_name_or_path: meta-llama/Meta-Llama-3-8B-Instruct

### method
stage: pt
do_train: true
finetuning_type: lora
lora_target: q_proj,v_proj

### dataset
dataset: c4_demo
cutoff_len: 1024
max_samples: 1000
overwrite_cache: true
preprocessing_num_workers: 16

### output
output_dir: saves/llama3-8b/lora/sft
logging_steps: 10
save_steps: 500
plot_loss: true
overwrite_output_dir: true

### train
per_device_train_batch_size: 1
gradient_accumulation_steps: 8
learning_rate: 0.0001
num_train_epochs: 3.0
lr_scheduler_type: cosine
warmup_steps: 0.1
fp16: true

### eval
val_size: 0.1
per_device_eval_batch_size: 1
evaluation_strategy: steps
eval_steps: 500

有一个问题:就是为什么这里的finetuning_type: lora还是取值为lora, 

pretrain 和 sft 的区别是:

sft是基于指令的 {"input":content, "instruction":content, "output": content}这样的数据格式

pt: 是自回归的任务{"text":content} 这样的文本即可  需要自己的数据进行领域知识的注入, 继续预训练和从零开始预训练在本质上是没有区别的,只不过一个是随机初始化参数 一个不是随机初始化参数

2.  代码阅读

主要分为三个部分pt的代码  sft的代码 和 ppo部分的代码

通用部分: 无论是 pt. sft. ppo 或者其他的 都需要进行这一步参数的获取

i). 参数获取

参数获取到的主要流程:
get_train_args(args):
# 接收 args(来自命令行,或者yaml,json 这样的配置文件)  通过 调用_parse_train_args 进行参数的分配
# 因为返回值是一个元组所以需要多个值进行接收
   model_args, data_args, training_args, finetuning_args, generating_args = _parse_train_args(args)
# _parse_train_args(args) 中主要如下:parser = HfArgumentParser(_TRAIN_ARGS)



def _parse_train_args(args: Optional[Dict[str, Any]] = None) -> _TRAIN_CLS:
    parser = HfArgumentParser(_TRAIN_ARGS)  # _TRAIN_ARGS 是一个超参数 在整个文件中都是可见的
    # # _TRAIN_ARGS_ 是一些 arguement的类 组成的list 会根据名字把参数分配到不同的 dataclass 中   所以是parser是一个不同的dataclass子类的实例化对象
    return _parse_args(parser, args)  # _parse_args 会返回参数,和parser对应  和前面的 mdoel_args, data_args 等对应

最后 get_train_args() 会返回一些和训练相关的参数:四部分如下:
model_args, data_args, training_args, finetuning_args, generating_args

根据不同的参数决定是哪一个微调或者继续预训练

def run_exp(args: Optional[Dict[str, Any]] = None, callbacks: List["TrainerCallback"] = []) -> None:
    model_args, data_args, training_args, finetuning_args, generating_args = get_train_args(args)
    # get_train_args(args) 得到和训练相关的一些 参数
    callbacks.append(LogCallback(training_args.output_dir))
    # 这个 是一个  list 内部元素是 TrainerCallback  默认值是空的
    # TrainerCallback:
        # 定制训练过程:允许用户在训练的不同阶段执行自定义的操作,例如记录日志、动态调整学习率、保存模型等。
        # 与 Trainer 类交互:可以访问和修改与训练相关的状态信息,如当前的训练步骤、metrics 的更新等。
    # 在进行下面的阶段的时候需要有上面的参数
    if finetuning_args.stage == "pt":
      
  • 4
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
Llama-factory是一个由利马养殖而来的工厂。利马作为一种动物在许多地方被用于毛和肉制品的生产。利马的毛是非常珍贵和高质量的,可以用于制作织物、毛线和毛毯等。因此,利马养殖业成为了一个潜力巨大和有利可图的行业。 Llama-factory的主要目标是通过高效率和可持续的生产方式,生产出高质量的利马制品。工厂采用先进的技术和设备,提高生产效率和产品质量。同时,为了保护环境和动物福利,工厂也将注重科学农业和动物养殖实践。 工厂保证了从利马养殖到制品加工的全过程的可追溯性和质量控制。优质利马毛的选择、剪切和加工过程严格按照标准操作规程进行,确保最终产品的优质和安全。 Llama-factory还将致力于产品的创新和市场开拓。除了传统的利马制品,如毛线和毛毯,工厂还会开发出更多样化的产品,如利马织物和时尚配饰。通过与设计师和品牌的合作,工厂将推出独特且具有竞争力的产品,满足不同消费者的需求。 同时,Llama-factory也将关注社会责任和可持续发展。工厂将积极参与当地社区的福利和环保项目,为地方经济和环境的改善做出贡献。 总之,Llama-factory将在利马养殖和产品制造领域发挥重要作用。通过高质量的利马制品和可持续的生产方式,工厂将为消费者提供优质的产品,同时为当地社区和环境做出积极贡献。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值