monticore issueshttps://git.rwth-aachen.de/groups/monticore/-/issues2024-02-05T12:17:13+01:00https://git.rwth-aachen.de/monticore/EmbeddedMontiArc/generators/EMADL2CPP/-/issues/123Schema validation fails when root model is not called 'MnistClassifier' (PyTo...2024-02-05T12:17:13+01:00Jonas DjurevciSchema validation fails when root model is not called 'MnistClassifier' (PyTorch Backend)# Remark
The training configuration of a network must be named `<componentName>_<networkInstanceName>` (where `componentName` is the name of the component containing the network instance, and `networkInstanceName` is the name of the netw...# Remark
The training configuration of a network must be named `<componentName>_<networkInstanceName>` (where `componentName` is the name of the component containing the network instance, and `networkInstanceName` is the name of the network instance inside that component). For example, the training configuration of the network in 'adanet_experiment' must be named `mnistClassifier_net`, since the component containing the network is called 'MnistClassifier' and the instance name is 'net'. If the configuration name does not follow that pattern, executing the generated Python script will fail.
# Problem
During schema validation, the name of the configuration is checked for hardcoded values (see `de.monticore.mlpipelines.automl.helper.ConfigurationValidationHandler.getScmName()`). This means, that schema validation only succeeds if the name of the configuration is 'Supervised' or starts with 'mnistClassifier'. The first option is not viable, as the name must follow the pattern from above (see remark). Therefore, the configuration must be named `mnistClassifier_<networkInstanceName>`, which consequently means that the root emadl model must be called 'MnistClassifier' or 'mnistClassifier'. Executing the EMADL2CPP generator on other models will therefore fail.
# Steps to reproduce
Execute the generator on an architecture, whose root model is not called 'MnistClassifier' or 'mnistClassifier'. Example execution:
- Main class: `de.monticore.lang.monticar.emadl.generator.MontiAnnaCli`
- Program arguments: `-m src/main/resources/calculator_experiment/emadl -r calculator.Connector -o target -b PYTORCH`
# Workaround
Until this issue is fixed, the method `getScmName()` (see above) must be modified to allow schema validation for configurations with custom names. To allow the execution above, the method must be modified as follows:
```
private static String getScmName(ASTConfiguration configuration) {
String scmName = configuration.getName();
if (scmName.startsWith("mnistClassifier") || scmName.startsWith("connector")) {
scmName = "Supervised";
} else if (scmName.equals("AdaNet")) {
scmName = "NeuralArchitectureSearch";
}
return scmName;
}
```Antonio AntovskiAntonio Antovskihttps://git.rwth-aachen.de/monticore/EmbeddedMontiArc/generators/EMADL2CPP/-/issues/122Network Tagging is ignored (PyTorch Backend)2024-02-05T12:17:01+01:00Jonas DjurevciNetwork Tagging is ignored (PyTorch Backend)# Problem
Multiple instances of the same network are trained separately instead of only once, even though a tagging file is present. While the tagging file is parsed and used to download the dataset, it is not used to determine, which ne...# Problem
Multiple instances of the same network are trained separately instead of only once, even though a tagging file is present. While the tagging file is parsed and used to download the dataset, it is not used to determine, which network instances have to be trained (see method `de.monticore.mlpipelines.workflow.AbstractWorkflow.getNetworkInstanceConfigs`). This requires the provision of one training and one pipeline configuration file per network instance.
# Steps to reproduce
Note: Getting far enough to trigger this problem requires implementing the workaround presented in issue #123, given that it is not yet solved.
Execute the EMADL2CPP generator on the MNISTCalculator example application located in `src/main/resources/calculator_experiment`.
For this purpose, use the following Run Configuration:
- Main class: `de.monticore.lang.monticar.emadl.generator.MontiAnnaCli`
- Program arguments: `-m src/main/resources/calculator_experiment/emadl -r calculator.Connector -o target -b PYTORCH`Antonio AntovskiAntonio Antovskihttps://git.rwth-aachen.de/monticore/EmbeddedMontiArc/generators/EMADL2CPP/-/issues/121Training loss is NaN sometimes (PyTorch Backend)2024-02-05T12:16:44+01:00Jonas DjurevciTraining loss is NaN sometimes (PyTorch Backend)# Problem
When running certain experiments, the training loss calculation in src/main/resources/experiments/steps/MySupervisedTrainer.py (line 80) sometimes returns 'NaN'. This results in debug messages like:
`Epoch:1 Train Loss:nan Trai...# Problem
When running certain experiments, the training loss calculation in src/main/resources/experiments/steps/MySupervisedTrainer.py (line 80) sometimes returns 'NaN'. This results in debug messages like:
`Epoch:1 Train Loss:nan Train Accuracy:10.03%`
# Steps to reproduce
Note: Getting far enough to trigger this problem requires implementing the workaround presented in issue #123, given that it is not yet solved.
This issue is not deterministic. However, when executing the EMADL2CPP generator as follows, there is a high chance of encountering the problem.
- Main class: `de.monticore.lang.monticar.emadl.generator.MontiAnnaCli`
- Program arguments: `-m src/main/resources/calculator_experiment/emadl -r calculator.Connector -o target -b PYTORCH`
Out of the six runs generated by this execution, typically 2-4 runs exhibit this behavior.
I've never encountered this issue with other experiments like the 'adanet_experiment' or 'squaredigit_experiment', even though all mentioned experiments use the same loss metric (cross entropy).Antonio AntovskiAntonio Antovskihttps://git.rwth-aachen.de/monticore/EmbeddedMontiArc/languages/EmbeddedMontiArcDL/-/issues/7Parameters cant be passed through nested components2024-01-29T19:12:07+01:00Marvin DaxhammerParameters cant be passed through nested componentsGiven three components where NetworkA is expected to pass through the parameter convChannels to the instance of NetworkB, an Exception occurs when the component is being resolved:
```
java.lang.IllegalStateException: The following names ...Given three components where NetworkA is expected to pass through the parameter convChannels to the instance of NetworkB, an Exception occurs when the component is being resolved:
```
java.lang.IllegalStateException: The following names could not be resolved: convChannels,convChannels
at de.monticore.lang.monticar.cnnarch._symboltable.ResolvableSymbol.resolveOrError(ResolvableSymbol.java:80)
at de.monticore.lang.monticar.cnnarch._symboltable.StreamInstructionSymbol.resolve(StreamInstructionSymbol.java:32)
at de.monticore.lang.monticar.cnnarch._symboltable.ResolvableSymbol.resolveOrError(ResolvableSymbol.java:78)
at de.monticore.lang.monticar.cnnarch._symboltable.ArchitectureSymbol.resolve(ArchitectureSymbol.java:179)
```
component NetworkB<Z classes=10> (Z convChannels) {...}
component NetworkA<Z classes=10> (Z convChannels){ ports ...;
instance NetworkB<10> (convChannels) netB; ...}
component Main{
instance NetworkA<10> (20) net1;}Marvin DaxhammerMarvin Daxhammerhttps://git.rwth-aachen.de/monticore/EmbeddedMontiArc/generators/EMADL2CPP/-/issues/112Saving checkpoints during the model training (PyTorch backend)2023-05-25T16:14:07+02:00Nazish QamarSaving checkpoints during the model training (PyTorch backend)Problem: The PyTorch backend allows saving the trained model only after the complete training.
Improvement: The training pipeline should save the model checkpoints after each epoch. If one tries to run the incomplete experiment later, t...Problem: The PyTorch backend allows saving the trained model only after the complete training.
Improvement: The training pipeline should save the model checkpoints after each epoch. If one tries to run the incomplete experiment later, there should be a provision in the training pipeline to load the latest checkpoint and continue the training from there.aixaiaixaihttps://git.rwth-aachen.de/monticore/EmbeddedMontiArc/applications/gans/3d-gan/-/issues/23D Gan Training fails due to configuration errors2023-03-02T17:55:58+01:00Martin Fitzke3D Gan Training fails due to configuration errors`Train3D-GAN` pipeline fails due to configuration errors in `Generator.conf` file.`Train3D-GAN` pipeline fails due to configuration errors in `Generator.conf` file.aixaiaixaihttps://git.rwth-aachen.de/monticore/EmbeddedMontiArc/applications/gans/3d-gan/-/issues/1JAR not generated because of MXNET error2023-03-02T17:54:18+01:00Martin FitzkeJAR not generated because of MXNET errorJAR pipeline fails with this
```
mxnet.base.MXNetError: MXNetError: Error in operator conv5_deconvolution0: [16:46:17] ../src/operator/nn/deconvolution.cc:105: If not using CUDNN, only 1D or 2D Deconvolution is supported
```
C++ Library ...JAR pipeline fails with this
```
mxnet.base.MXNetError: MXNetError: Error in operator conv5_deconvolution0: [16:46:17] ../src/operator/nn/deconvolution.cc:105: If not using CUDNN, only 1D or 2D Deconvolution is supported
```
C++ Library is probably in the wrong versionaixaiaixaihttps://git.rwth-aachen.de/monticore/EmbeddedMontiArc/generators/EMADL2CPP/-/issues/109Open to-dos MA Mulhem2023-02-12T17:37:21+01:00Feras MulhemOpen to-dos MA MulhemOpen to-dos derived from Mulhem's Master thesis
- #108
- #107
- #106Open to-dos derived from Mulhem's Master thesis
- #108
- #107
- #106aixaiaixaihttps://git.rwth-aachen.de/monticore/EmbeddedMontiArc/generators/EMADL2CPP/-/issues/108Workflow adjustment for multiple networks2023-02-12T17:37:21+01:00Feras MulhemWorkflow adjustment for multiple networks**Current situation**
The current workflow assumes one EMADL component representing a neural network. For applications like the MNISTCalculator we need to deal with multiple networks, possibly trained with different training configurati...**Current situation**
The current workflow assumes one EMADL component representing a neural network. For applications like the MNISTCalculator we need to deal with multiple networks, possibly trained with different training configurations.
**Tasks**
- [ ] When an EMADL model is given, iterate the model looking up all networks.
**Notes**
- The [EMADLGenerator] implemented (https://git.rwth-aachen.de/monticore/EmbeddedMontiArc/generators/EMADL2CPP/-/blob/master/src/main/java/de/monticore/lang/monticar/emadl/generator/EMADLGenerator.java#L988) this functionality
- An example of how to resolve a neural network in an emadl model is given [here](https://git.rwth-aachen.de/monticore/EmbeddedMontiArc/generators/EMADL2CPP/-/blob/master/src/main/java/de/monticore/mlpipelines/workflow/AbstractWorkflow.java#L100)https://git.rwth-aachen.de/monticore/EmbeddedMontiArc/generators/EMADL2CPP/-/issues/107Naming conventions for emadl network components2023-02-12T17:37:21+01:00Feras MulhemNaming conventions for emadl network components**Current situation**
- A [naming convention](https://git.rwth-aachen.de/monticore/EmbeddedMontiArc/generators/EMADL2CPP/-/blob/master/src/main/java/de/monticore/mlpipelines/workflow/AbstractWorkflow.java#L67) is followed to resolve conf...**Current situation**
- A [naming convention](https://git.rwth-aachen.de/monticore/EmbeddedMontiArc/generators/EMADL2CPP/-/blob/master/src/main/java/de/monticore/mlpipelines/workflow/AbstractWorkflow.java#L67) is followed to resolve configuration such that these are assumed to have the _full name_ of a to-be-trained neural network.
**Tasks**
- [ ] Adjust the naming conventions to exclude the _package name_ from the network full name
- [ ] Adjust the names of the corresponding configurations accordingly. The configurations need also to have package information explicitly ( i.e. _package MyPackage_)https://git.rwth-aachen.de/monticore/EmbeddedMontiArc/generators/EMADL2CPP/-/issues/106Link pipeline configurations to their reference model2023-04-25T19:50:07+02:00Feras MulhemLink pipeline configurations to their reference modelThis issue aims to enable the toolchain to resolve the correct pipeline reference model based on the pipeline configuration. This mechanism is similar to resolving the training-time architectures using training configuration.
**Tasks**
...This issue aims to enable the toolchain to resolve the correct pipeline reference model based on the pipeline configuration. This mechanism is similar to resolving the training-time architectures using training configuration.
**Tasks**
- [ ] Add a schema definition that contains an entry for the desired reference model
- [ ] in the pipeline configuration add an entry that determines which schema shall be used ( for example _learning method_)
- [ ] Resolve the corresponding schema definitions for the given pipeline configuration
- [ ] Validate the pipeline configuration (similar to [training configurations](https://git.rwth-aachen.de/monticore/EmbeddedMontiArc/generators/EMADL2CPP/-/blob/master/src/main/java/de/monticore/mlpipelines/workflow/AbstractWorkflow.java#L139))
**Notes**
- The above-mentioneed steps shall be added as part of the commen [workflow ](https://git.rwth-aachen.de/monticore/EmbeddedMontiArc/generators/EMADL2CPP/-/blob/master/src/main/java/de/monticore/mlpipelines/workflow/AbstractWorkflow.java#L139 ) for ML pipelines.
- Currently, the workflow resolves a default pipeline reference modelTobias HörnschemeyerNazish QamarHiroshi HamanoAkashKumarDSTobias Hörnschemeyerhttps://git.rwth-aachen.de/monticore/EmbeddedMontiArc/generators/EMADL2CPP/-/issues/65MontiAnna Configuration Model2023-03-24T23:15:00+01:00Evgeny KusmenkoMontiAnna Configuration Model- [x] Please create a meta-model of a MontiAnna configuration as a class diagram
- [x] Please define the SA model transformation performed on the metal model , e.g. using pseudo-code
- [x] Please define the model transformation of other ...- [x] Please create a meta-model of a MontiAnna configuration as a class diagram
- [x] Please define the SA model transformation performed on the metal model , e.g. using pseudo-code
- [x] Please define the model transformation of other hyperparameter search algorithms performed on the configuration metal model , e.g. using pseudo-code
- [x] Please create object diagrams conforming to the meta-model for several steps of SA and other algorithms, cf. [OD ticket](https://git.rwth-aachen.de/monticore/EmbeddedMontiArc/generators/EMADL2CPP/-/issues/63)Hiroshi HamanoAkashKumarDSHiroshi Hamano2023-03-10https://git.rwth-aachen.de/monticore/EmbeddedMontiArc/generators/EMAM2Middleware/-/issues/34Extend ROS topics to accept integer arrays for state representation2022-11-11T19:39:14+01:00Anis Abdollahi-SissanExtend ROS topics to accept integer arrays for state representationWhen using the EMAM2Middleware to generate a reinforcement learning agent, which is connected via ros-gym to python, defining the state as an integer array in python leads to an error, because the middleware initializes the state topic i...When using the EMAM2Middleware to generate a reinforcement learning agent, which is connected via ros-gym to python, defining the state as an integer array in python leads to an error, because the middleware initializes the state topic in ROS as Float32MultiArray, regardless of the definition in the python files.
[This](https://git.rwth-aachen.de/monticore/EmbeddedMontiArc/applications/reinforcement_learning/topologyoptimizer/-/blob/main/additional_files/Middleware/Environment.ftl) file implements Int32MultiArray as the default topic type for the state.
To resolve this issue, it would be necessary to automatically switch between the Float- and Integer-representation for the ROS state topic.
This can be implemented in the template file for the environment of the agent.Lukas BramThilo MetzlaffLukas Bramhttps://git.rwth-aachen.de/monticore/EmbeddedMontiArc/applications/reinforcement_learning/coopmontisimautopilot/-/issues/1Move to emadl-maven-plugin2022-09-21T15:00:10+02:00Evgeny KusmenkoMove to emadl-maven-plugin- please use emadl-maven-plugin instead of shell based build in CI
- please add streamtests- please use emadl-maven-plugin instead of shell based build in CI
- please add streamtestsRodion PrikhodovskyTil MohrRodion Prikhodovskyhttps://git.rwth-aachen.de/monticore/EmbeddedMontiArc/applications/reinforcement_learning/roboschoolhalfcheetah/-/issues/1Move CI to emadl-maven-plugin2022-09-21T14:49:42+02:00Evgeny KusmenkoMove CI to emadl-maven-plugin- Please use emadl-maven-plugin in CI
- please remove shell based CI
- please add stream tests- Please use emadl-maven-plugin in CI
- please remove shell based CI
- please add stream testsYuyuan LiuYuyuan Liuhttps://git.rwth-aachen.de/monticore/EmbeddedMontiArc/applications/reinforcement_learning/ataripong/-/issues/1Create maven-based CI2022-09-23T20:00:11+02:00Evgeny KusmenkoCreate maven-based CI- please create emadl-maven-plugin based CI
- please remove shell script based build
- please add stream tests- please create emadl-maven-plugin based CI
- please remove shell script based build
- please add stream testsYuyuan LiuYuyuan Liuhttps://git.rwth-aachen.de/monticore/EmbeddedMontiArc/applications/balltracking/-/issues/1Move to emadl-maven-plugin2022-09-21T12:53:35+02:00Evgeny KusmenkoMove to emadl-maven-plugin@ahmed.diab bitte aktualisiere die CI pipeline so, dass nur noch das emadl-maven-plugin genommen wird@ahmed.diab bitte aktualisiere die CI pipeline so, dass nur noch das emadl-maven-plugin genommen wirdAhmed DiabAhmed Diab2022-09-30https://git.rwth-aachen.de/monticore/EmbeddedMontiArc/generators/EMADL2CPP/-/issues/45Explicit input and output shape required2022-09-02T17:30:04+02:00Luis LaasExplicit input and output shape requiredA component currently requires explicit input and output shapes to be successfully parsed.
This works:
package rangePrediction;
component MLPL{
ports in Q(0:100)^{1} data,
out Q(-oo:+oo)^{1} prediction;
...A component currently requires explicit input and output shapes to be successfully parsed.
This works:
package rangePrediction;
component MLPL{
ports in Q(0:100)^{1} data,
out Q(-oo:+oo)^{1} prediction;
implementation CNN {
data -> prediction;
}
}
However this does not work:
package rangePrediction;
component MLPL{
ports in Q(0:100) data,
out Q(-oo:+oo) prediction;
implementation CNN {
data -> prediction;
}
}
Generating code terminates with this Exception:
Exception in thread "main" java.lang.IllegalStateException: Unknown port type
The expected behavior is that both versions work.
generator-version: 0.5.3
environment: registry.git.rwth-aachen.de/monticore/embeddedmontiarc/generators/emadl2cpp/mxnet/190https://git.rwth-aachen.de/monticore/EmbeddedMontiArc/generators/EMADL2CPP/-/issues/43AutoML: Hyperparameter Search2023-03-04T10:41:15+01:00Evgeny KusmenkoAutoML: Hyperparameter Search- Please extend the framework to optimize the MontiAnna hyperparameters for a given learning problem
- extend the framework to automatically exchange pipeline components, e.g. exchange image preprocessing components
- create tests for yo...- Please extend the framework to optimize the MontiAnna hyperparameters for a given learning problem
- extend the framework to automatically exchange pipeline components, e.g. exchange image preprocessing components
- create tests for your framework
- create a model in the MNISTCalculator project X
- create a CI experiment in the MNISTCalculator projectHiroshi HamanoAkashKumarDSHiroshi Hamano2023-05-01https://git.rwth-aachen.de/monticore/EmbeddedMontiArc/applications/mnistcalculator/-/issues/18Design a streamtest template for MNISTCalculator2022-07-25T17:10:09+02:00Yuyuan LiuDesign a streamtest template for MNISTCalculatorTo implement:
- A generator for EMADL `streamtest` in `EMADL-Generator`
- (If necessary) An Expansion of grammar in `languagecommon` project.To implement:
- A generator for EMADL `streamtest` in `EMADL-Generator`
- (If necessary) An Expansion of grammar in `languagecommon` project.Yuyuan LiuYuyuan Liu