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

Progress of the development #104

Open
Wei-TianHao opened this issue May 23, 2024 · 1 comment
Open

Progress of the development #104

Wei-TianHao opened this issue May 23, 2024 · 1 comment

Comments

@Wei-TianHao
Copy link

Motivation and description

Hi folks,

Thanks for the wonderful work. I believe this package is of great importance to the Julia ML community since it bridges Julia with the massive well-trained models from other Languages, especially Python.

I'm wondering how far the development has gone, and how much work needs to be done. I suppose adding a development progress and a checklist of core features to be implemented can be helpful for outsider contributors. And an anticipation of the first stable release can be inspiring.

Please let me know your thoughts. Thanks!

Possible Implementation

No response

@dfdx
Copy link
Collaborator

dfdx commented May 23, 2024

I'd say there are 2 main steps that need to be done before we can freely interchange models between Julia and Python:

  1. Add missing operations.
  2. Implement full-featured conversion between Flux.jl models and ONNX.jl graphs.

(1) is relatively straightforward. How to contribute section describes the process of adding new operations pretty thoroughly. Usually, people try to load an existing model, find out what's missing and add it.

(2) is more tricky. There's no 1:1 mapping between Flux layers and ONNX graphs, neither structurally, nor in terms of operations. The current strategy is to map ONNX operations to NNlib primitives (which Flux mostly uses under the hood), but even semantics of NNlib functions is often pretty different from the semantics of ONNX operations, so we have to introduce alternative implementations instead.

Anyway, adding missing operations is the first and the most critical step.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants