Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

A few questions #51

Closed
xoofx opened this issue May 7, 2018 · 14 comments
Closed

A few questions #51

xoofx opened this issue May 7, 2018 · 14 comments
Assignees
Labels
question Further information is requested

Comments

@xoofx
Copy link
Member

xoofx commented May 7, 2018

Hey,

That's a great initiative to see a machine learning FW for .NET 👍

I have a couple of questions about the rationale behind the project:

  • Apart the difference between a pure .NET implementation and a mixed C++&.NET Bindings, what are the advantages/differences with CNTK?
  • What are the training algorithms supported? (e.g CNN, RNN?)
  • What is the plan about multi-machine, multi-CPU, GPU (and multi-GPU) support?
  • Is it aimed at providing an abstract API (and a default implementation) that could plug to any implementation behind (e.g CNTK?)?

Thanks!

@helloguo
Copy link

helloguo commented May 7, 2018

In addition to @xoofx 's questions, is there a project road map?

@xoofx
Copy link
Member Author

xoofx commented May 7, 2018

@helloguo
Copy link

helloguo commented May 7, 2018

Thank you! @xoofx

@fiigii
Copy link

fiigii commented May 7, 2018

What is the plan about multi-machine, multi-CPU, GPU (and multi-GPU) support?

Additionally, what is the plan about vectorizing the fundamental computation via .NET Core hardware intrinsics (e.g., SSE, AVX, FMA, etc.)?

Related to #56

@danmoseley
Copy link
Member

@GalOshri

@GalOshri
Copy link
Contributor

GalOshri commented May 8, 2018

Thank you for the feedback and questions! ML.NET is an extensible framework and we plan to explore how to integrate with libraries like CNTK, TensorFlow, and Accord.NET to enable them as part of ML.NET. Take a look at this blog post with a few more details. One of our goals is to provide consistent APIs that can cover a variety of different components/libraries/approaches.

We’ve highlighted some of the components that are available in the 0.1 release in the release notes. The API docs also have a list of learners. More learners are coming soon. Please let us know if there are any specific learners that you need.

Distributed training is on our roadmap, but we’d love to understand your requirements.

@asthana86 will have more details regarding #56.

@bratan05
Copy link

bratan05 commented May 8, 2018

Hope to work with you when I finish my phd. I'm intrigued.

@shauheen shauheen added the question Further information is requested label May 8, 2018
@veikkoeeva
Copy link
Contributor

veikkoeeva commented May 10, 2018

Will there be more documentation on the components? I would like to understand better what is the purpose of it in the pipeline (e.g. why is file mandatory?).

While trying to fix the tests, I happened to notice there's matrix and vector code interspersed in some of the functions. I don't know the plan, or the way this projects works, but would it be OK to contemplate refactoring things like matrices and vectors to components of their own? How about larger issues if the project is still young?

Some things in no particular order, to make the discussion more concrete:

  • In distributed setting especially it might be prudent to make a policy to remove DateTime.Now from the codebase.
  • The code would be easier to handle in production if logging data to streams were removed and tracing and logging facilities used like in other .NET frameworks (at least in the newerones, e.g. MEL and EventId).
  • The code in the tests is a bit difficult to follow due to quite a lot of inheritance that makes debugger jump around quite a lot (and code like this makes parallization more difficult) and then it's not that straightforward to get from logging output to the source of the problem and also some data format changes (from double/float to string and so on). I have ideas (and opinions), but I'm hesitant to share them as this isn't an area I'm that familiar with nor I'm familiar with the codebase. I would hope IProgress and others wouldn't be too fixed inside the codebase already in the beginning. :)

@KrzysztofCwalina
Copy link
Member

The code would be easier to handle in production if logging data to streams were removed and tracing and logging facilities used like in other .NET frameworks (at least in the newerones, e.g. MEL and EventId).

@eerhardt this is something you are looking into, aren't you?

@KrzysztofCwalina
Copy link
Member

KrzysztofCwalina commented May 10, 2018

In distributed setting especially it might be prudent to make a policy to remove DateTime.Now from the codebase.

filed #110 (updated) to do a scrub

@eerhardt
Copy link
Member

The code would be easier to handle in production if logging data to streams were removed and tracing and logging facilities used like in other .NET frameworks (at least in the newerones, e.g. MEL and EventId).

@eerhardt this is something you are looking into, aren't you?

Yes, I've been working/thinking on ways we can make this area better. The first line of thinking is to try to use DiagnosticSource. MEL may be appropriate in some cases, but it may be a dependency we don't want to take.

filed #57 to do a scrub

I think you meant #110 😉

@veikkoeeva
Copy link
Contributor

@eerhardt I refer to aspnet/Logging#612 for background discussion in the larger .NET sphere. That particular thread links into deeper and quite long discussion about the state of logging and tracing and distributed tracing (technical trace, business logs, distributed setting too). The Orleans maintainers have worked on this too (with the community too), so you might want to ping their experiences or ask at https://gitter.im/dotnet/orleans. At least @galvesribeiro and @jdom have been involved.

@GalOshri I didn't notice to link https://gitter.im/Microsoft/CNTK?at=59887b6b614889d475275902 earlier. I see there's a good opportunity to combine Orleans and ML.NET, which is partially why I was wondering that host thing. :) Orleans has now heterogenous siloes and it would be great to combine actors in a live, production system with a machine learning framework suited to the task (as a production system and build tooling on Orleans).

@veikkoeeva
Copy link
Contributor

Adding here feedback discussion on logging and tracing and paging @eerhardt just in case: https://github.com/Microsoft/ApplicationInsights-dotnet-server/issues/913.

@codemzs
Copy link
Member

codemzs commented Jun 30, 2019

We can make this issue closed as the questions have been answered.

@codemzs codemzs closed this as completed Jun 30, 2019
@ghost ghost locked as resolved and limited conversation to collaborators Mar 31, 2022
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
question Further information is requested
Projects
None yet
Development

No branches or pull requests