Cntk: Thanks

Created on 19 Apr 2019  路  14Comments  路  Source: microsoft/CNTK

Just to say thank you for all the hard work your team has put into the update and for the years you've put into this project in general. Although I've had my occasional issues with the framework, and I wish the .Net side were more a little more developed/documented, this has been an incredibly useful project.

Given its open source status, would Microsoft be willing to hand the keys to the car over to members of the community for the future? Perhaps an institution like a university or a foundation, to allow its developers to keep building in cutting features and expand the usefulness to users like myself?

Once again, thanks for all your hard work.

Most helpful comment

Thanks for all the CNTK supporters, and I am privileged to have worked on it, and learned a lot in the process. You can continue to use CNTK for training and inference in the way it currently is, as other Microsoft internal teams that still runs old models even in BrainScript or NDL. Stopping adding new features does not mean CNTK is no longer open source, it just means that going forward, there will be no new GPU support (say, CUDA 11+), and no major new features added. For different user scenarios, I think you may have different choices:

  • Deep learning newcomers: IMO CNTK is still a good entry to understand basics of deep learning, if you found CNTK documents/tutorials/examples useful. Once you learnt the basic, it won't be too hard to switch between frameworks. However, the DL field is changing rapidly and CNTK has already lagged behind in a lot of ways, so if you need more advanced features like dynamic graph, PyTorch would be a better choice.
  • Model maintainers: If you already have CNTK models working, and to maintain it just means training with new data, you can continue to use CNTK the way you currently use it. Actually, teams inside Microsoft are doing this too. If there are serious bugs preventing productivity, they still will be fixed. For inference, you can continue to use CNTK C/C++/Python/C#/Java APIs, or you may export CNTK models in ONNX format, and use ONNX Runtime or ORT as a slimmer and faster inference engine. You'll be surprised to find how much faster it is comparing to CNTK, and how slimmer the setup is (forget about OpenMPI when you just need inference!). ORT currently provides C/C++/Python/C# interfaces.
  • Model builders: If you have CNTK model, and want to use features that are not currently supported in CNTK, please consider switch to other frameworks like TensorFlow/PyTorch/etc. Our team has done lots of data reader work inside PyTorch to ensure teams in Microsoft can switch from CNTK to PyTorch. Besides, we are also in the process of migrating CNTK specific distributed trainer like BMUF to PyTorch. Hopefully you'll find that useful too when migrating your model.

The good thing about open source is that the community can continue to fork/evolve if needed, unlike other Microsoft products that only ship binaries (Win7 I am looking at you).

_Old soldiers never die, they just fade away._

All 14 comments

I am definitely committed to continue developing cntk too and i have my own library extending it.

For those who are reading this and wondering what happened, you can check out this commit in the release branch.

For your attention please: @KeDengMS @liqunfu @BowenBao @thiagocrepaldi

adios CNTK. Can't help but think that maybe the priority should have been .Net support from the get-go. Not sure if ML.net will take up the slack as a more general tool for ML.

@fwaris indeed, there are important features missing from the C# side (ironically the lack of ONNX export rather stands out) but in general there is nothing else near it in the .Net universe, at least for some months (it isn't clear anyone from else Microsoft is getting allocated to swing behind that effort).

For Python users, they have more options but the library design of CNTK is (present tense) rather good, and perhaps a little easier to get started with than Pytorch.

Nonetheless, its here, so its forkable...

Without a major industry player backing CNTK, I don't see a bright future for it. TF and Torch have major backers - it takes a lot of resources to support such big toolkits.

I plan to transition to the TensorFlow F# API, which looks to be quite good (e.g. it has tooling support to type check some tensor operations):

https://github.com/fsprojects/TensorFlow.FSharp

(at least working on the CNTK F# API was a good learning experience for understanding DL and hopefully the learnings will carry over)

I just hope other frameworks can have a fully featured single header easy to use C++ API like CNTK some day.
Thanks for making learning ML frameworks easy!

I want to say thanks to microsoft team too. Your framework is my first DNN framework and I really love this one! Moreover, this framework is only one which has clear and convinient API for C++ and C#/.NET.
And as @YanYas noticed it would be very cool if community will have opportunity to make PRs into CNTK. For example, I have plans to make module in C++ API with Python-like layers and .NET wrapper for it. And I know that there are many developers who wants to continue to use and improve this framework. Please make this opportunity to us.

Thanks for having provided us CNTK during the past years. I still believe that it is a great product and think it deserved better luck. Now my next task will be migrating to ONNX Runtime for evaluation, and probably to MXNet or PyTorch for training.

It's kind of shocking to me. CNTK is the best when it comes to handling data and sequences! And the API is the nicest of all frameworks.

@KeDengMS , would you kindly tell us what is the best way going forward for CNTK users? Would models trained with CNTK be supported by ONNXruntime in the future?

Really wish CNTK development will be resumed at some point.

Thanks for giving us an excellent tool!

@delzac I'd like to continue using CNTK in my projects as well. If some functions are missing, I can implement them in Python. The only problem is, training will be a bit slower in that case because the primitive op is not implemented in C++.

I'll also be continuing to use cntk in the foreseeable future. It currently meets my needs and the API with dynamic axes is truly beautiful.

Indeed, the design is very well thought out. Dynamic axis, automatically converting data to/from numpy, parallel scaling .. I can go on.

CNTK team, if you are no longer working on CNTK, would you perhaps release some design document to the community?

To move CNTK forward I guess people need to start publishing lots of good papers with code written in CNTK. I have the feeling CNTK would have been popular if Microsoft had open sourced their famous speech recognition 馃槂

Thanks for all the CNTK supporters, and I am privileged to have worked on it, and learned a lot in the process. You can continue to use CNTK for training and inference in the way it currently is, as other Microsoft internal teams that still runs old models even in BrainScript or NDL. Stopping adding new features does not mean CNTK is no longer open source, it just means that going forward, there will be no new GPU support (say, CUDA 11+), and no major new features added. For different user scenarios, I think you may have different choices:

  • Deep learning newcomers: IMO CNTK is still a good entry to understand basics of deep learning, if you found CNTK documents/tutorials/examples useful. Once you learnt the basic, it won't be too hard to switch between frameworks. However, the DL field is changing rapidly and CNTK has already lagged behind in a lot of ways, so if you need more advanced features like dynamic graph, PyTorch would be a better choice.
  • Model maintainers: If you already have CNTK models working, and to maintain it just means training with new data, you can continue to use CNTK the way you currently use it. Actually, teams inside Microsoft are doing this too. If there are serious bugs preventing productivity, they still will be fixed. For inference, you can continue to use CNTK C/C++/Python/C#/Java APIs, or you may export CNTK models in ONNX format, and use ONNX Runtime or ORT as a slimmer and faster inference engine. You'll be surprised to find how much faster it is comparing to CNTK, and how slimmer the setup is (forget about OpenMPI when you just need inference!). ORT currently provides C/C++/Python/C# interfaces.
  • Model builders: If you have CNTK model, and want to use features that are not currently supported in CNTK, please consider switch to other frameworks like TensorFlow/PyTorch/etc. Our team has done lots of data reader work inside PyTorch to ensure teams in Microsoft can switch from CNTK to PyTorch. Besides, we are also in the process of migrating CNTK specific distributed trainer like BMUF to PyTorch. Hopefully you'll find that useful too when migrating your model.

The good thing about open source is that the community can continue to fork/evolve if needed, unlike other Microsoft products that only ship binaries (Win7 I am looking at you).

_Old soldiers never die, they just fade away._

Without a major industry player backing CNTK, I don't see a bright future for it. TF and Torch have major backers - it takes a lot of resources to support such big toolkits.

I plan to transition to the TensorFlow F# API, which looks to be quite good (e.g. it has tooling support to type check some tensor operations):

https://github.com/fsprojects/TensorFlow.FSharp

(at least working on the CNTK F# API was a good learning experience for understanding DL and hopefully the learnings will carry over)

@fwaris As I know, TensorFlow.FSharp will get into a big milestone soon.
Check their latest achievement on TFNET branch: https://github.com/fsprojects/TensorFlow.FSharp/tree/TFNet
TensorFlow F# will be with the capabilities of building NN/ CNN/ RNN deep learning's computation graph. Hope @moloneymb will be back to work on this project soon.

Was this page helpful?
0 / 5 - 0 ratings

Related issues

lush93 picture lush93  路  5Comments

mogrysama picture mogrysama  路  4Comments

Prasandhmcw picture Prasandhmcw  路  5Comments

chrispugmire picture chrispugmire  路  3Comments

playgithub picture playgithub  路  3Comments