PaddleNLP
PaddleNLP copied to clipboard
[Question]: 关于llm的pretrain部分代码实现与sft部分代码实现
请提出你的问题
描述:
在使用 PaddleNLP 进行 LLM 训练和微调时,我发现 pretrain 和 sft 部分的代码实现存在一些问题。当前的设计使得用户将 PaddleNLP 视为一个命令行层面的应用包,而非传统的代码层面应用包,这影响了代码的可读性和可维护性。
问题:
代码复杂性:
pretrain 和 sft 部分的代码实现显得过于庞大和复杂。当前实现包含大量冗余代码,导致代码难以维护和理解。 设计问题:
现有设计似乎过于强调命令行的使用,而非代码层面的应用。这种设计策略让用户难以将 PaddleNLP 作为一个高效的代码包进行使用。 建议:
重构代码:
目标: 将 pretrain 和 sft 部分的实现重构为100行以内的代码实现,保留当前所有功能,同时删除不必要的代码。 理由: 简化代码结构不仅能提高可读性和可维护性,还能降低用户的学习成本,使得 PaddleNLP 更加用户友好。 增强微调功能:
功能要求: 微调部分需要支持多轮对话微调功能,以适应复杂的多轮指令数据集。 理由: 现有的微调功能无法处理某些多轮对话数据集,这限制了模型在实际应用中的有效性和灵活性。 期望的改进:
简化实现:
对 pretrain 和 sft 部分进行全面重构,删除冗余代码,确保核心功能的实现集中在简洁的代码中。 多轮对话支持:
在微调部分实现对多轮对话的支持,增强处理多轮对话数据集的能力,提升模型的实际应用效果。