OneFlow 发布 v0.2.0

GiantPandaCV

共 4996字,需浏览 10分钟

 ·

2020-10-11 05:51

本文转载自:OneFlow 发布 v0.2.0


GitHub:     https://github.com/Oneflow-Inc/oneflow

Changelog

v0.2.0 (09/10/2020)

OneFlow 已经开源72天啦,现在也迎来了0.2.0版本,在这个版本中, OneFlow  进行了不少性能优化,在分布式性能最快的道路上继续狂飙。针对国内用户优化编译体验,从此下载编译 OneFlow 快到飞起。


除此之外,本次更新的亮点还有:

1. grpc 版本升级到最新版,消除老版本 grpc 带来的编译障碍;

2. Tensorflow XLA 升级到了最新版;

3. 我们做了大量工作来增强稳定性、图编译和运行速度,即将发布深度学习框架测试报告,可关注 Oneflow-Inc/ DLPerf 项目先睹为快;

4. 您可能已经关注到了我们正在快马加鞭地优化 OneFlow 的动态图机制, C++ 和 Python 交互方式正在从 SWIG 向 Pybind11 迁移,届时 OneFlow API 至少和 PyTorch 一样好用(如果不是更好用)。

5. API 文档进一步完善,更多示例更易懂。

 


Op 修复、性能优化

支持二元 add op 与前驱节点融合

  • FuseAddToOutput #3524

  • Dropout support add_to_output #3569

  • Dev matmul add to output #3581

kernel 性能优化

  • Fused BatchNormAddRelu#3519

  • bn_add_relu use bit mask#3645

  • layer_norm param grad #3604

  • Fused layer norm #3591

  • BiasAdd Row Col Half2 #3636

  • MaskAndScaleHalf2 #3643

  • Optimize CudaAsyncMemoryCopier #3543

  • Avoid using local memory in CropMirrorNormalizeGpuKernel #3539

  • LayerNormGpuKernel use fused InstanceScaleCenter #3573

使用 user op 实现 model update ops,以及 model update ops 支持 fusion

  • Add model update user ops #3546

  • Migrate L1L2RegularizeGradientOp to UserOp Framework #3527

  • model update fuse scalar_mul_by_tensor #3635

  • Dev indexed slices model update user ops #3561

  • Dev adam xla and rm sys op #3584

NCCL 支持设置最大融合 op 数量

  • Add nccl_fusion_max_ops #3567

新 op

  • [feature] Fused ImageDecoderRandomCropResize #3644

  • Add AmpWhiteIdentityOp #3658

  • Add ImageDecoderRandomCropResizeOp::InferParallelSignature #3646

  • Dev add op tril #3511

  • add masked fill op #3515

cuDNN 算法推导支持全局缓存

  • Add CudnnConvAlgoCache #3649

Bugfix 与 其他

  • fix broadcast div grad  #3525

  • fix optimizer copy-paste bug #3508

  • fix bug about pad value #3640

  • Optimize some default values #3648

  • Fix cuda runtime #3621

  • Fix reshape inplace #3545

  • Refactor rmsprop mean_square and add unit tests for optimizers  #3523

  • Remove cuDNN fields from OperatorConf #3536

  • Add UserOpConfWrapperBuilder::ScopeSymbolId #3528

  • Fix NcclCollectiveBoxing builder_name #3563

  • rm conv2d cpu testcase #3574

  • fix broadcast_to_compatible_with grad bug #3609

  • Add inline for half #3600

  • Fix converter half #3599

  • Fix gpu_atomic_max double overload use fmaxf #3578

  • fix upsample #3579

Eager Execution

给 eager 相关的代码加上更多注释;微调 stateless_call 指令,区分 mutable_input 和 output 两类不同的参数;实现 broadcast 指令;
  • fix fmt cuda_copy_d2h_stream_type #3606

  • add comments for cuda_copy_d2h_stream_type.cpp #3603

  • Fix TopoForEachNode in GenCollectiveBoxingPlan #3566

  • Split call_op_kernel instruction args into const_input/mutable_input/output  #3562

  • split BlobObject and EagerBlobObject #3485

  • remove unused code under vm/ #3585

  • Dev broadcast instruction #3555

  • Broadcast instruction #3552

pybind11 集成

现在 OneFlow 内 SWIG 和 pybind11 共存,之后会逐步切换到 pybind11
  • pybind11 integration #3517

  • upgrad to pybind11 master and pass exe path #3522

  • Update rel script for pybind11 #3526

  • Dev oneflow pybind api #3625

优化、修复编译工具

修复了一些导致编译失败缓慢的不合理配置、加速了依赖下载、 修复了 ubuntu dockerfile
  • [bug] fix ubuntu docker build #3504

  • change link order to fix the cpu+openblas build #3634

  • [bug] fix bug: oneflow cpu-only lib flags #3615

  • add convert_url_to_oss_https_url and DCN flag #3595

  • Add cn url in readme #3583

  • make absl use tar not git #3570

  • Optimize nvcc gencode flag #3577

Transport 网络传输子系统

支持 P2P 动态网络传输
  • [feature] Transport #3549

集成 CFG 工具

CFG 是基于 proto 语法的、生成跨 python、C++ 数据交互代码的工具
  • Dev integrate cfg #3597

  • Less usage of PbMessage in Operator #3651

XLA 支持优化

升级到了 TF 最新版本
  • upgrade XRT XLA to TF 2.3.0 #3531

  • Fix XLA crash #3548

GRPC 升级

升级到了 GRPC 最新版本
  • Upgrade grpc #3551

  • [bug] [bugfix] GRPC: control server CompletionQueue shutdown. #3589

CI、测试优化

将 XLA 也加入 CI,优化了 op 的测试用例,自动上传 master 最新 commit
  • Parallel unit tests (Step 1, refactor existing unit tests) #3632

  • Add build type for pr oss upload #3627

  • XLA ci support #3564

  • Auto upload tar to aliyun oss #3592

  • Don't pack source code if it is not master #3593

  • move fmt to github hosted  #3559

  • refactor ci #3557

  • CtrlTest find available port for ctrl port instead of handwriting #3610

ONNX 支持

优化 IR,更新测试脚本
  • onnx update #3495

增加、修订文档

  • Add api docs zzk #3505

  • Add api docs zzk #3533

  • Add api docs zzk #3514

  • fix masked_fill op doc #3560

Python 前端修复

  • Fix the bug of using op_module_builder in namespace scope #3513

  • Comment release global for now to avoid random crash in python #3629

  • update lib name in link flags #3623

  • rm spaces in rm_spaces optimizer.py #3619

优化、修复系统通用组件

  • [enhancement] flat ErrorProto error_type #3474

  • [enhancement] Added user_op_conf getter for BatchAxisContext/KernelInitContext/SbpContext #3506

  • [bug] Fix UserOpConfWrapper::has_input/has_output #3507

  • support reflecting cfg message #3655

  • Refactor scope #3652

  • Refactor placement scope#3650

  • Bugfix split config proto and session job set #3637

  • [Bug fix] Release global variables #3624

  • Add OpRegistry::SetAreaId #3608

  • Dev converter #3580

  • Tensor::dptr support half #3582

  • Use InferOutBlobDescsIf instead of InferBlobDescsIf in InferOpNodeLogicalBlobDesc  #3535

  • Add ctrl_in_op_name only when unreachable #3537


当然,还有更多新特性等着大家在 change log 中发现,下个版本见!


- END -


扫描文末二维码,加入讨论群,及时获取更多资讯!



        



如无法入群,可求助 OneFlow 小助手

QQ:3119703778

VX:OneFlowXZS

浏览 21
点赞
评论
收藏
分享

手机扫一扫分享

分享
举报
评论
图片
表情
推荐
点赞
评论
收藏
分享

手机扫一扫分享

分享
举报