Uploaded image for project: 'Zapped: AcousticBrainz'
  1. Zapped: AcousticBrainz
  2. AB-98

Generate custom project file during model evaluation stage

    • Icon: Bug Bug
    • Resolution: Fixed
    • Icon: Normal Normal
    • None
    • None
    • Server

      When we have evaluation of a dataset there is an option to choose the type of filtering and class normalization.

      We should also have an option to select which SVM parameters we want to use, to let people reduce the search space.

          [AB-98] Generate custom project file during model evaluation stage

          Rashi Sah added a comment -

          Rashi Sah added a comment - https://github.com/metabrainz/acousticbrainz-server/pull/257 @Alastair, Please take a look!

          Rashi Sah added a comment - - edited

          Great!
          I got it and am working on this

          Rashi Sah added a comment - - edited Great! I got it and am working on this

          Good question - I think we can generate the initial project file and then open it and make changes to the C and gamma values.

          In gaia_wrapper.py we make the project file and then perform run_tests (https://github.com/metabrainz/acousticbrainz-server/blob/6f5a0a14eed6eff7a214acbfd2c3a80385d398cd/dataset_eval/gaia_wrapper.py#L40). Between these two steps we can have another method which opens this project file, changes the value of C and gamma, and saves it again.

          This means that we don't have to change the contents of the project template, or code in the gaia project. If we have other parameters that we want to change (e..g preprocessing values) then we can make those changes in this function too.

          Alastair Porter added a comment - Good question - I think we can generate the initial project file and then open it and make changes to the C and gamma values. In gaia_wrapper.py we make the project file and then perform run_tests ( https://github.com/metabrainz/acousticbrainz-server/blob/6f5a0a14eed6eff7a214acbfd2c3a80385d398cd/dataset_eval/gaia_wrapper.py#L40 ). Between these two steps we can have another method which opens this project file, changes the value of C and gamma, and saves it again. This means that we don't have to change the contents of the project template, or code in the gaia project. If we have other parameters that we want to change (e..g preprocessing values) then we can make those changes in this function too.

          Rashi Sah added a comment -

          Hi Alastair,
          As per now, I am able to take user input for C and gamma values as well as preprocessing values and able to save them in database.
          Now, my problem statement is:
          I need to pass these values as parameter in generate_classification_project (https://github.com/MTG/gaia/blob/e18b4ecf402fdfdf95f3d6a55b2268f4ca1dc91b/src/bindings/pygaia/scripts/classification/generate_classification_project.py#L32) module from dataset_eval/gaia_wrapper.py

          I am not able to find the gaia module inside docker so that i can edit the above file.
          Should I separately clone the gaia repository and then do the changes or should I make changes inside the gaia python package?

          Rashi Sah added a comment - Hi Alastair, As per now, I am able to take user input for C and gamma values as well as preprocessing values and able to save them in database. Now, my problem statement is: I need to pass these values as parameter in generate_classification_project ( https://github.com/MTG/gaia/blob/e18b4ecf402fdfdf95f3d6a55b2268f4ca1dc91b/src/bindings/pygaia/scripts/classification/generate_classification_project.py#L32 ) module from dataset_eval/gaia_wrapper.py I am not able to find the gaia module inside docker so that i can edit the above file. Should I separately clone the gaia repository and then do the changes or should I make changes inside the gaia python package?

          We should allow the user to enter any value for C and gamma, but should pre-fill it with the values that are in the template file. I think that a text field with comma separated values is good for this.

          For the preprocessing values, the users can only select from the available options. Perhaps a list of items with checkboxes is OK here.

          Alastair Porter added a comment - We should allow the user to enter any value for C and gamma, but should pre-fill it with the values that are in the template file. I think that a text field with comma separated values is good for this. For the preprocessing values, the users can only select from the available options. Perhaps a list of items with checkboxes is OK here.

          Rashi Sah added a comment -

          @Alastair,
          Could you please tell me, whether the user will be allowed to enter one C, one gamma and one preprocessing values out of those given in https://github.com/MTG/gaia/blob/master/src/bindings/pygaia/scripts/classification/classification_project_template.yaml#L99 , or any value of his choice?

          Rashi Sah added a comment - @Alastair, Could you please tell me, whether the user will be allowed to enter one C, one gamma and one preprocessing values out of those given in https://github.com/MTG/gaia/blob/master/src/bindings/pygaia/scripts/classification/classification_project_template.yaml#L99 , or any value of his choice?

          Rashi Sah added a comment -

          Thank you @Alastair!
          I am working on it.

          Rashi Sah added a comment - Thank you @Alastair! I am working on it.

          When a dataset has been created, a user can submit it to be evaluated:

          The evaluation screen has some preferences (artist filtering, normalisation), but we want to add additional preferences.

          In gaia (the tool we use for building models), we have a configuration file (https://github.com/MTG/gaia/blob/master/src/bindings/pygaia/scripts/classification/classification_project_template.yaml) which we use to tell gaia what settings to use when building the model.

          In order to do this, we should provide an interface which allows the user to select which of the 5 preprocessing methods they want to use (https://github.com/MTG/gaia/blob/1d593b89a65cbf0a6b3f1e70cb34e8d067dc6fd5/src/bindings/pygaia/scripts/classification/classification_project_template.yaml#L96), and which values they want for C and gamma (https://github.com/MTG/gaia/blob/1d593b89a65cbf0a6b3f1e70cb34e8d067dc6fd5/src/bindings/pygaia/scripts/classification/classification_project_template.yaml#L99-L100).
          The interface should provide the existing values as defaults, but if the user changes these values, the updated versions will be written to the project file.

          The project file is created using the generate_classification_project module in gaia (https://github.com/MTG/gaia/blob/e18b4ecf402fdfdf95f3d6a55b2268f4ca1dc91b/src/bindings/pygaia/scripts/classification/generate_classification_project.py#L61-L62). We should add new parameters to this script (in the gaia repository), which if added will change the values of the preprocessing, C, and gamma values in the resulting file that it creates.

          We should have a feature flag (like FEATURE_EVAL_LOCATION - https://github.com/metabrainz/acousticbrainz-server/blob/fbb9a89774ea57535c8592aa73299abee3015f9c/default_config.py#L62) to only show this option on the acousticbrainz site when it is enabled.

          Alastair Porter added a comment - When a dataset has been created, a user can submit it to be evaluated: The evaluation screen has some preferences (artist filtering, normalisation), but we want to add additional preferences. In gaia (the tool we use for building models), we have a configuration file ( https://github.com/MTG/gaia/blob/master/src/bindings/pygaia/scripts/classification/classification_project_template.yaml ) which we use to tell gaia what settings to use when building the model. In order to do this, we should provide an interface which allows the user to select which of the 5 preprocessing methods they want to use ( https://github.com/MTG/gaia/blob/1d593b89a65cbf0a6b3f1e70cb34e8d067dc6fd5/src/bindings/pygaia/scripts/classification/classification_project_template.yaml#L96 ), and which values they want for C and gamma ( https://github.com/MTG/gaia/blob/1d593b89a65cbf0a6b3f1e70cb34e8d067dc6fd5/src/bindings/pygaia/scripts/classification/classification_project_template.yaml#L99-L100 ). The interface should provide the existing values as defaults, but if the user changes these values, the updated versions will be written to the project file. The project file is created using the generate_classification_project module in gaia ( https://github.com/MTG/gaia/blob/e18b4ecf402fdfdf95f3d6a55b2268f4ca1dc91b/src/bindings/pygaia/scripts/classification/generate_classification_project.py#L61-L62 ). We should add new parameters to this script (in the gaia repository), which if added will change the values of the preprocessing, C, and gamma values in the resulting file that it creates. We should have a feature flag (like FEATURE_EVAL_LOCATION - https://github.com/metabrainz/acousticbrainz-server/blob/fbb9a89774ea57535c8592aa73299abee3015f9c/default_config.py#L62 ) to only show this option on the acousticbrainz site when it is enabled.

          Rashi Sah added a comment -

          Yes @Alastair,
          I have full AB server set up, I am able to submit data with abzsubmit and creating dataset as well.

          Rashi Sah added a comment - Yes @Alastair, I have full AB server set up, I am able to submit data with abzsubmit and creating dataset as well.

          Sure, I'll try and write some notes tomorrow.

          Just to confirm, to work on this you will need to have a full AcousticBrainz server set up, be able to submit data to it with the client, and be able to create a dataset and train a model using it.

          Alastair Porter added a comment - Sure, I'll try and write some notes tomorrow. Just to confirm, to work on this you will need to have a full AcousticBrainz server set up, be able to submit data to it with the client, and be able to create a dataset and train a model using it.

            rsh Rashi Sah
            alastairp Alastair Porter
            Votes:
            0 Vote for this issue
            Watchers:
            3 Start watching this issue

              Created:
              Updated:
              Resolved:

                Version Package