-
Notifications
You must be signed in to change notification settings - Fork 26
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
clarify TASK docs #550
clarify TASK docs #550
Conversation
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
thanks a lot, this is super helpful. i just added some minor comments above from the perspective of a naive user :)
loss: 'categoricalCrossentropy', | ||
metrics: ['accuracy'] | ||
}, | ||
modelID: 'my_new_task-model', |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
a bit confused why there are two tasks here, simple-face
and my_new_task
?
In this case, your model and task will be uploaded and stored on our DISCO servers. You will have to make the task visible to the API. For your custom model, the JSON model architecture is necessary, but the .bin weight file is optional : if you include the weights file, your model will be loaded with the passed weights. If a weights file is not specified, the weights for the model will be initialized randomly. | ||
If you want to add a new task to our production DISCO server you have two possibilities: | ||
* using the user interface as described above | ||
* exporting your own `TaskProvider` from `discojs/discojs-core/src/default_tasks/` and adding a new default task by contributing to the code. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
maybe say first one is without any coding required, second one is with describing the ML task in your own code
export { titanic } from './titanic' | ||
export { simpleFace } from './simple_face' | ||
export { myNewTask } as my_new_task from './my_new_task' // <---- including our new custom task! | ||
export { geotags } from './geotags' |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
or new one last?
|
||
### Making the task visible to the API | ||
> Note that `discojs-core` must only contain platform-agnostic code that works both in the browser and on Node.js. | ||
> Thus, if your task requires reading some file from your local file system, you need to define the task in `discojs-node` only: `discojs/discojs-node/src/default_tasks/my_new_task.ts` |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
could you comment on the easiest case first, where is the model usually read from (and mention can be initial model, or pre-trained model)
|
||
> Note, it's important to add the `export` tag to the model as well as to the subsequent objects that we define. | ||
The interface let you load your model however you want, as long as you return a `tf.LayersModel` at the end. If you use a | ||
pre-trained model, you can simply load and return said model in the function via `tf.loadLayersModel(modelPath)`. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
(same comment as above, is the default recommendation some URL, or file-system access on the phone, or server?)
.set(defaultTasks.simple_face.task.taskID, simpleFaceModelPath) | ||
|
||
``` | ||
At runtime, the models are stored in `disco/server/models/`, and it is also in the server side that we let disco know where exactly they are saved. In particular, |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
do you mean the initial models for each task, or even the freshly trained ones? (i guess it's true for FL but not for decentralized?)
I clarified some part of the tasks docs to better reflect the task workflow after the refactoring (
TaskProvider
interface which wrapsTask
andtf.LayersModel
).I also tried to remove some duplicated information and fix broken links.