Creating a Model Group from Scratch

Create a new model group in Data Science from scratch.

  • See Before You Begin.
    1. On the Projects list page, select the project that you want to add the model group to. If you need help finding the list page or the project, see Listing Projects.
    2. On the project details page, select Model Group.
    3. From Actions (under the Search and Filter text box), select Create Model Group.
      The Create Model Group page opens.

    1. Basic information

    Select Create a new Model Group.

    2. Add Model Group details

    Provide identifying information for the model group.

    • Name (Optional): Enter a unique name (limit of 255 characters). If you don't provide a name, a name is automatically generated.
    • Description (Optional): Enter a description (limit of 400 characters) for the model group.
    • Compartment
    • Upload an artifact file: If you're creating a model group of type HOMOGENOUS, then use the upload artifact option to upload the model group deployment runtime artifact.
    • Tags (under Advanced options) (Optional): Add tags to the model group. If you have permissions to create a resource, then you also have permissions to apply free-form tags to that resource. To apply a defined tag, you must have permissions to use the tag namespace. For more information about tagging, see Resource Tags. If you're not sure whether to apply tags, skip this option or ask an administrator. You can apply tags later.

    3. Add Model

    Add models to the model group.

    • Select from compartment list: Select the compartment that contains the project that includes the models that you want to add to the model group.
    • Select from project list: Select the project that includes the models that you want to add to the model group, then select the models from the list.

    4. Add Model Group Version History

    Optional. Either select an existing model group version history or create a new one.

    • Use existing model group version history
      • Select from compartment list: Select the compartment that contains the project that includes the existing model group version history that you want to add to the model group.
      • Select from project list: Select the project that includes the existing model group version history that you want to add to the model group, then select the model group version history from the list.
    • Create a new Model Group Version History
      • Select from compartment list: Select the compartment that contains the project that you want to add the new model group version history to.
      • Select from project list: Select the project that you want to add the new model group version history to.
      • Name (Optional): Enter a name (limit of 255 characters). If you don't provide a name, a name is automatically generated.
      • Description (Optional): Enter a description (limit of 400 characters) for the model group.

    5. Model group configuration

    Select the classification type for the model group.

    • Homogenous
    • Heterogeneous
    • Stacked Inferencing
      • Base Model OCID

    Review and create

    Review the configuration and then select Create.

    1. (Optional) Create Model Group version history:
      def __create_model_group_version_history(compartment_id, project_id):
          model_group_version_history_details_object = CreateModelGroupVersionHistoryDetails()
          model_groupversion_history_details_object.compartment_id = f'<compartment_id>
          model_group_version_history_details_object.display_name = f'<display_name>
          model_group_version_history_details_object.project_id = f'<project_id>
       
          try:
              mgvh_response = data_science_client.create_model_group_version_history(model_group_version_history_details_object)
              mgvh_id = json.loads(str(mgvh_response.data))['id']
              return mgvh_id
          except Exception as e:
              logger.error("Failed to create model group version history with error: %s", format(e))
    2. Create Model Group:
      def __create_model_group(compartment_id, project_id):
          model_group_details_object = ModelGroupDetails()
          model_group_details_object.type = ModelGroupDetails.TYPE_HOMOGENEOUS
          #  Optionally, use model_group_details_object.custom_metadata_list to specify custom metadata for the model group.
       
          member_model_details_list = [
              MemberModelDetails(
                  model_id="ocid1.datasciencemodel.oc1.iad.amaaaaaam3xyxziav7hda2c2xn57bifhvfjnb63teaxsyal4hie2uykkwrtq",
                  inference_key="key-1"),
              MemberModelDetails(
                  model_id="ocid1.datasciencemodel.oc1.iad.amaaaaaam3xyxzia4qrtrviyzlhkvaimsl6aub7nldtnzts72voejpdvmu2q",
                  inference_key="key-2"),
              MemberModelDetails(
                  model_id="ocid1.datasciencemodel.oc1.iad.amaaaaaam3xyxziaxicmn7domsjwl5ojmks3dki32ffy26prhey6tmxiwkeq",
                  inference_key="key-3")
          ]
       
          member_model_entries = MemberModelEntries()
          member_model_entries.member_model_details = member_model_details_list
       
          create_model_group_details_object = CreateModelGroupDetails()
          create_model_group_details_object.compartment_id = f'<compartment_id>
          create_model_group_details_object.display_name = f'<display_name>
          create_model_group_details_object.project_id = f'<project_id>
          create_model_group_details_object.member_model_entries = member_model_entries
          create_model_group_details_object.model_group_details = model_group_details_object
       
          try:
              model_group_response = data_science_client.create_model_group(create_model_group_details_object)
              model_group_id = json.loads(str(model_group_response.data))['id']
              # Get the data from response
              logger.info(model_group_response.headers)
              return model_group_id
          except Exception as e:
              logger.error("Failed to create model group with error: %s", format(e)))
    3. Create Model Group with versioning:
      def __create_model_group_with_versioning(compartment_id, project_id, model_group_version_history_id):
          model_group_details_object = ModelGroupDetails()
          model_group_details_object.type = ModelGroupDetails.TYPE_HOMOGENEOUS
          # Optionally, use model_group_details_object.custom_metadata_list to specify custom metadata for the model group.
       
          member_model_details_list = [
              MemberModelDetails(
                  model_id="ocid1.datasciencemodel.oc1.iad.amaaaaaam3xyxziav7hda2c2xn57bifhvfjnb63teaxsyal4hie2uykkwrtq",
                  inference_key="key-1"),
              MemberModelDetails(
                  model_id="ocid1.datasciencemodel.oc1.iad.amaaaaaam3xyxzia4qrtrviyzlhkvaimsl6aub7nldtnzts72voejpdvmu2q",
                  inference_key="key-2"),
              MemberModelDetails(
                  model_id="ocid1.datasciencemodel.oc1.iad.amaaaaaam3xyxziaxicmn7domsjwl5ojmks3dki32ffy26prhey6tmxiwkeq",
                  inference_key="key-3")
          ]
       
          member_model_entries = MemberModelEntries()
          member_model_entries.member_model_details = member_model_details_list
       
          create_model_group_details_object = CreateModelGroupDetails()
          create_model_group_details_object.compartment_id = f'<compartment_id>
          create_model_group_details_object.display_name = f'<display_name>
          create_model_group_details_object.project_id = f'<project_id>
          create_model_group_details_object.member_model_entries = member_model_entries
          create_model_group_details_object.model_group_details = model_group_details_object
          create_model_group_details_object.model_group_version_history_id = model_group_version_history_id
          create_model_group_details_object.version_label = f'<version_label>
       
          try:
              model_group_response = data_science_client.create_model_group(create_model_group_details_object)
              model_group_id = json.loads(str(model_group_response.data))['id']
              # Get the data from response
              logger.info(model_group_response.headers)
              return model_group_id
          except Exception as e:
              logger.error("Failed to create model group with error: %s", format(e))
              exit(1)
    4. Upload Model Group artifact:
      def __attach_model_group_artifact(modelGroupId, file_name):
          logger.info("Create model group artifact")
          f = open(file_name, "rb")
          logger.info("File open")
          content_disposition = "attachment;filename={}".format(file_name)
          logger.debug(content_disposition)
          try:
              data_science_client.base_client.timeout = 30 * 60
              data_science_client.create_model_group_artifact(
                  modelGroupId, f, content_disposition=content_disposition)
              logger.info("Upload success")
          except Exception as e:
              logger.error("Upload error")
          f.close()
          return
    1. Create Model Group version history:
      {
          "displayName":"ModelGroupVersionHistory-Demo-1",
          "description":"Model Group Version History Demo ",
          "compartmentId":"ocid1.compartment.oc1.iad.aaaaaaaasrc2amzllrujrnevxzq2lqgiblp3xs2iwit7xamanuwzdbipe2zq",
          "projectId":"ocid1.datascienceproject.oc1.iad.aaaaaaaa5i2bgmfne4nmlotldb2ngo4itvmbck24m3dro2gdqszsissmydoq"
      }
    2. Create Model Group request payload (homogeneous type):
      {
          "createType": "CREATE",
          "compartmentId": "ocid1.tenancy.oc1..aaaaaaaahzy3x4boh7ipxyft2rowu2xeglvanlfewudbnueugsieyuojkldq",
          "projectId": "ocid1.datascienceproject.oc1.iad.aaaaaaaa5i2bgmfne4nmlotldb2ngo4itvmbck24m3dro2gdqszsissmydoq",
          "displayName": "Model-Group-Create-Demo-1",
          "description": "Test model group creation",
          "modelGroupDetails" : {
              "type": "HOMOGENEOUS",
              "customMetadataList": [{
                  "key":"key-1",
                  "value":"val-1",
                  "description": "Model Group metadata",
                  "category": "Configuration"
              }]
          },
          "memberModelEntries": {
              "memberModelDetails": [
                  {
                      "inferenceKey": "key1",
                      "modelId": "ocid1.datasciencemodel.oc1.iad.aaaaaaaa4kqzxsqdmlf3x2hedpyghfpy727odfuwr3pwwhocw32wbtjuj5zq"
                  },
                  {
                      "inferenceKey": "key2",
                      "modelId": "ocid1.datasciencemodel.oc1.iad.aaaaaaaa5oyorntk2xa2swphlzqgjwmevnrentlcay7ixy5bahkuwb34xlpq"
                  },
                  {
                      "inferenceKey": "key3",
                      "modelId": "ocid1.datasciencemodel.oc1.iad.aaaaaaaatutjajr32s5uggnv3zud3ve4rya57innybhpkuam3egzmvow4zvq"
                  }
              ]
          }
      }
    3. Create Model Group request with versioning:
      {
          "createType": "CREATE",
          "compartmentId": "ocid1.tenancy.oc1..<ocid>",
          "projectId": "ocid1.datascienceproject.oc1.<ocid>",
          "displayName": "Model-Group-Create-Demo-1",
          "description": "Test model group creation",
          "modelGroupDetails" : {
              "type": "HOMOGENEOUS",
              "customMetadataList": [{
                  "key":"key-1",
                  "value":"val-1",
                  "description": "Model Group metadata",
                  "category": "Configuration"
              }]
          },
          "memberModelEntries": {
              "memberModelDetails": [
                  {
                      "inferenceKey": "key1",
                      "modelId": "ocid1.datasciencemodel.oc1.<ocid>"
                  },
                  {
                      "inferenceKey": "key2",
                      "modelId": "ocid1.datasciencemodel.oc1.<ocid>"
                  },
                  {
                      "inferenceKey": "key3",
                      "modelId": "ocid1.datasciencemodel.oc1.<ocid>"
                  }
              ]
          },
          "modelGroupVersionHistoryId":"ocid1.notreviewedplaceholder.oc1.<ocid>",
          "versionLabel": "Model group versioning demo"
      }
    4. Upload Model Group Artifact
      POST https://datascience.<region-identifier>.oci.oraclecloud.com/20190101/modelGroups/<model-group-ocid>/artifact
       
      Body:
      type: binary
      attachment: model-artifact file

Creating a Stacked Model Group Using the API

  1. Create a base model using the CreateModel API command.
  2. Create fine-tuned weight model using the CreateModel API command.
  3. Create a model group with the modelGroupDetails:
    1. type: STACKED
    2. baseModelId: $baseModelOCID (created in step 1)
    For example:
    compartment_id = "compartmentID"
    project_id = "projectID"
    mg_payload = json.dumps({
            "createType": "CREATE",
            "compartmentId": compartment_id,
            "projectId": project_id,
            "displayName": "Model Group - Stacked ",
            "description": "Test stacked model group",
            "modelGroupDetails" : {
                "type": "STACKED",
                "baseModelId": "ocid1.datasciencemodel.oc1.iad.amaaaaaav66vvnia5eofo6co5mduy7rkfia2ve3xk6trqzkvrolwvxhkdwxa"
            },
            "memberModelEntries": {
                "memberModelDetails": [
                    {
                        "inferenceKey": "basemodel",
                        "modelId": "ocid1.datasciencemodel.oc1.iad.amaaaaaav66vvnia5eofo6co5mduy7rkfia2ve3xk6trqzkvrolwvxhkdwxa"
                    },
                    {
                        "inferenceKey": "sql-lora-1",
                        "modelId": "ocid1.datasciencemodel.oc1.iad.amaaaaaav66vvniavutbdm736xd6azkwdimfgae2j75nh5aem2ejkywbzsia"
                    },
                    {
                        "inferenceKey": "sql-lora-2",
                        "modelId": "ocid1.datasciencemodel.oc1.iad.amaaaaaav66vvniajgixlb4ajceyrv2vlxtz3opkangpcgt3cl3jeovva3oa"
                    }
                ]
            }
        })