jittor API不如Pytorch友好

jittor API不如Pytorch友好,如多GPU操作、只有Var没有Tensor、自动微分功能与优化器耦合度太高、某些属性功能重复或不够明确等,导致构建复杂项目时较为繁琐。希望能好好改进下API,如果能出一份Pytorch、jittor不同的API操作对比文档,能稍微友好点。

您好,感谢您的意见,您提到的几个其中有的部分我们在不断改进,有的部分是属于jittor和pytorch的差异。

  1. 多GPU操作:目前jittor的多gpu操作是通过mpi来集成的,jittor.mpi — Jittor 1.3.1.24 文档
    因为这种方法被证明是效率比较高的,pytorch早期单进程多GPU控制性能较低,pytorch内部也在优化接口,jittor目前没有暴露多卡接口,目的也是为了让大家不用关心多卡和单卡的差异,代码可以无缝运行,您如果有特殊需求,欢迎和我们联系。
    如果您只是要选择是在那张卡上单独运行,您可以设置环境变量export CUDA_VISIBLE_DEVICES=x, 关于在python代码中的控制具体那张卡运行,我们正在开发该特性。

  2. 只有Var没有Tensor,这一点其实是jittor在简化框架学习成本,pytorch引入tensor和variable的主要原因是,pytorch的梯度传播是通过backward大水漫灌,因此需要额外引入一个用来控制梯度的类型,而jittor中的梯度管理和优化器中,就免去了这个问题。

  3. 自动微分功能与优化器耦合度太高:您可以调用jt.grad实现自动微分,和torch.autograd是类似的,优化器包含了自动微分功能的原因,我也在之前的帖子里回复您了 Var缺少backward导致灵活度降低 - #2,来自 cjld 主要原因是简化编程、降低代码写错的概率(pytorch需要频繁的zero grad带来性能下降)、提高性能;

  4. 某些属性功能重复或不够明确等:谢谢您的反馈,如果有更具体的信息也欢迎您反馈,或者加我微信为大家提供帮助:grinning:

  5. 出一份Pytorch、jittor不同的API操作对比文档:这个已经安排上了,很快会发布出来的 :grin:

jittor是一个新生的框架,我们不希望一味复制拷贝pytorch的全套接口,而是在接口上改进,提升用户体验,当然目前jittor框架由高校几个同学维护,人手有限,很难在各方面做到和pytorch一样,但我们会在未来不断改进,扩充团队规模、提升为同学们的服务 :grinning_face_with_smiling_eyes:

1 Like