2024-4-19 15:19 /
一个词: Simplicity

(1) API Simplicity. 尤其关注Return的简洁性。比如,dataloader的__getitem__必须返回原始数据结构(video, text),而并非tokenized text, 或者vit_features, 最好连transform都不要有。

(2) Package Simplicity. 避免非必须advanced packages,如apex, OpenMMLab, flash-attn, 虽然能显著提高training efficiency,但是这些库在环境配置/推理时引入大量不确定因素,没有照样能跑,自己用用可以,开源时应仅保留基础的accelerate框架(可选)。

(3) Structure Simplicity. 远离复用,一个repo就做一件事。多个结构通过一个通用框架如(class BasicModel(ABC))绑在一起只会增加debug和修改的难度,百害无一利。需要复现的项目就别学transformers和diffusers了。

几个附加想法:
1. 半开源约等于没开源
2. 本地跑不如在线跑(hf space)
3. 多卡不如单卡
4. 别用Docker、SLURM(仅可选)

越是节约用户时间、需要配置的环境越少、越简单的项目越具有传播效应。
Tags: 笔记 杂谈