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

Project name of "deepkit" changes nested directory behavior #12

Open
planetceres opened this issue Apr 23, 2020 · 4 comments
Open

Project name of "deepkit" changes nested directory behavior #12

planetceres opened this issue Apr 23, 2020 · 4 comments

Comments

@planetceres
Copy link

A logical name to keep DeepKit configuration files within a project would be nested in a subdirectory called deepkit. However, using this convention on a DeepKit server causes inconsistency with deepkit.yml config values.

Server Example

For example, say we're training a model in a parent repo of https://github.com/username/MyNetwork.git

If we create a directory ./deepkit and put deepkit.yml there, DeepKit can't seem to find the configuration. Notice the [object Object] placeholder value.

./MyNetwork
└──  deepkit
    └── deepkit.yml

deepkit_issue_001

But if we duplicate the same deepkit.yml file and nest it under ./deepkit/train, DeepKit is able to find the config

./MyNetwork
└──  deepkit
    └── train
        └── deepkit.yml

deepkit_issue_002

GUI Example

This also happens when using the GUI on localhost to manage a Project - but it is affected one level higher in the directory structure (so that the [object Object] placeholder value appears if ./deepkit.yml is in the root of the project:

./MyNetwork
└──  deepkit.yml

Summary

One solution is to make sure that DeepKit configuration files are not organized under a directory named deepkit . However, unless the directory name deepkit needs to be reserved, it might cause less confusion to correct this behavior so that experiments are not affected by this.

@marcj
Copy link
Member

marcj commented Apr 24, 2020

@planetceres thanks for the detailed description. Could you also please post your deepkit.yml content? I wonder if training is an actual config value defined in the file, what content it has, and if training is correctly displayed when the bug is not seen.

@planetceres
Copy link
Author

While the example I showed above is a private project, this same behavior happens with the default examples in this repo and the deepkit python-sdk. The only difference is that I've had to replace parameters with config.

distributed-simple/deepkit.yml

image: python:3.7.0-alpine3.8

docker:
    binds:
        - /home/user/deepkit/deepkit-python-sdk/:/deepkit-sdk
    env:
        - PYTHONPATH=/deepkit-sdk

config:
    lr: 50
    optimizer: sgd
    training:
        epochs: 50
        samples: 20

tasks:
    ...

@marcj
Copy link
Member

marcj commented May 19, 2020

    training:
        epochs: 50
        samples: 20

this results always in [object Object] as nested objects are not supported in the create-experiment view. I tried your example with deepkit/deepkit.yml and it correctly displays the configuration in the create-experiment view (except the training entry config option).

Screenshot 2020-05-19 at 19 01 10

I don't understand your example to be honest. You have shown two screenshots of different configurations. num-machines as of the second screenshot is not in your posted deepkit.yml, so I don't understand the reproduction case.

@marcj
Copy link
Member

marcj commented May 19, 2020

If we create a directory ./deepkit and put deepkit.yml there, DeepKit can't seem to find the configuration

But you showed a screenshot of this configuration, so Deepkit found it. I really don't get that bug. You said Deepkit doesnt find the configuration, yet you created a screenshot of this very configuration in the GUI. What exactly do you mean with "Deepkit can't seem to find it"?

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