ludwig 配置类型安全和自动补全

cdmah0mi  于 2个月前  发布在  其他
关注(0)|答案(1)|浏览(30)

关于你的功能请求是否与问题相关?请描述。

LudwigModel接受yaml字符串或原始字典作为模型配置,在许多示例中,你可以看到相当数量的硬编码的yaml字符串,但这样的yaml结构没有引导,也没有预先知道,这使得在程序接口中采用声明式方法更具挑战性。

描述使用场景

查看LLM微调:
https://colab.research.google.com/drive/1c3AO8l_H6V_x37RwQ8V7M6A-RmcBf2tG?usp=sharing#scrollTo=JfZq1-qbulcg
看起来我可以指定预处理采样率,好奇我在预处理中还能做什么,我是否可以为预期的多核利用设置固定并行度呢?🤔

描述你希望得到的解决方案

理想情况下,有pydentic类定义每个yaml结构,这样你就有类型安全、输入和输出验证以及IDE自动补全以便更快地查找可能的字段和值以及带有代码中的文档。然而,代码库中现有的数据类对于配置也足够好了,因为它们提供了自动补全和参数文档的可能性。
类似于:

config = LLMConfig(
    base_model="meta-llama/Llama-2-7b-hf", 
    quantization=BitsAndBites(bits=4), 
    adapter=Lora(alpha=16), 
    prompt=Prompt(template="Say hello to {username}"),
    input_features=TextFeature(name="prompt", preprocessing=Preprocessing(max_sequence_length=256)),
    output_feature=TextFeature(name="output", preprocessing=Preprocessing(max_sequence_length=256)),
    preprocessing=Preprocessing(sample_ratio=0.1, parallelism=4)
)
model = LudwigModel(config=config, logging_level=logging.INFO)

描述你考虑过的替代方案

我看到已经存在这样的领域模型:
ludwig/ludwig/features/text_feature.py
第211行 in e46a989
| | classTextInputFeature(TextFeatureMixin, SequenceInputFeature): |
它们包含模式实现细节,这些细节对于更容易和更快地自动补全可能的属性搜索是必要的,如果它们的API不打算改变,那么重用它们可能会更快,我假设配置的yaml已经被反序列化为这样的类。

附加上下文

这不仅有助于适应声明式方法,还可以节省反序列化过程。

a7qyws3x

a7qyws3x1#

你好,Tradunsky。感谢你的建议!我个人认为这对于第一次使用的用户来说可能不太友好,并且与我们当前的笔记本不兼容。然而,我想听取@tgaddair和@justinxzhao的意见,因为我同意我们应该有更多的检查措施。

相关问题