Angepasste Softwarespezifikation erstellen (Watson Machine Learning)

Nachdem Sie ein angepasstes Image erstellt, registriert und hochgeladen haben, müssen Sie eine angepasste Softwarespezifikation und eine Laufzeitdefinitionsdatei erstellen, damit Sie die Bibliotheken und Pakete verwenden können, die Sie im angepassten Watson Machine Learning-Image angegeben haben.

Führen Sie die folgenden Schritte aus, um die Softwarespezifikation und die Laufzeitdefinitionsdatei zu erstellen. Zum Hochladen der Dateien in die erforderlichen Pfade auf dem angegebenen Datenträger verwenden Sie den Datenträgerservice.

  1. Rufen Sie das erforderliche Plattformzugriffstoken ab. Der Befehl gibt das Trägertoken im Feld 'accessToken' zurück:

      curl <Cloud-Pak-for-Data-URL>/v1/preauth/validateAuth  -u <Benutzername>:<Kennwort>
    
  2. Erstellen Sie eine Datenträgerinstanz. Stellen Sie dabei sicher, dass der Namensbereich auf den korrekten Datenträger verweist.

    curl -k -X POST \
      $CPDHOST/zen-data/v3/service_instances \
      -H "Authorization: Bearer ${TOKEN}" \
      -H 'Content-Type: application/json' \
      -d '{
       "addon_type": "volumes",
       "addon_version": "-",
       "create_arguments": {
      "metadata": {
       "existing_pvc_name": "cc-home-pvc"
        }
       },
       "namespace": "wmloct13",
       "display_name": "CCHome"
    }'
    
  3. Überprüfen Sie, ob die neue Datenträgerinstanz verfügbar ist.

    curl -k \
        $CPDHOST/zen-data/v3/service_instances \
        -H "Authorization: Bearer ${TOKEN}" \
        -H 'Content-Type: application/json' | jq '.service_instances[] | .display_name,.id,.metadata.existing_pvc_name'
    
  4. Starten Sie den Dateiserver für einen Datenträger.

    VSNAME=CCHome
    

    Stoppen Sie den Dateiserver für einen Datenträger.

    curl -k -X DELETE \
      $CPDHOST/zen-data/v1/volumes/volume_services/$VSNAME \
      -H "Authorization: Bearer $TOKEN"
    

    Starten Sie den Dateiserver erneut.

    curl -k -X POST \
      $CPDHOST/zen-data/v1/volumes/volume_services/$VSNAME \
      -H "Authorization: Bearer $TOKEN" \
      -H 'Content-Type: application/json' \
      -d '{}'
    
  5. Laden Sie die angepasste Softwarespezifikation hoch.

    Erstellen Sie die Metadaten:

    SW_SPEC_NAME=demo-spec-1_py37
    DISPLAY_NAME='test sw spec base 0.1.40-amd64'
    
    SW_SPEC_JSON=${SW_SPEC_NAME}.json
    PATH_SW_SPEC_JSON=`pwd`"/"$SW_SPEC_JSON
    echo $PATH_SW_SPEC_JSON
    

    Laden Sie die Spezifikation hoch:

    echo '{
      "metadata": {
     "name": "'"$SW_SPEC_NAME"'",
     "description": "Test"
      },
      "entity": {
     "software_specification": {
       "type": "base",
       "built_in": false,
       "package_extensions": [],
       "display_name": "'"$DISPLAY_NAME"'",
       "software_configuration": {
         "included_packages": [
           {
             "name": "scikit-learn",
             "version": "0.23"
           },
           {
             "name": "pytorch-onnx",
             "version": "1.3"
           },
           {
             "name": "tensorflow",
             "version": "2.1"
           },
           {
             "name": "gensim",
             "version": "3.8.0"
           }         
         ],
         "platform": {
           "name": "python",
           "version": "3.7"
         }
       }
     }
      }
    }' > $SW_SPEC_JSON
    
    cat $SW_SPEC_JSON
    

    Rückgabe:

    {
      "metadata": {
        "name": "demo-spec-1_py37",
        "description": "Test"
      },
      "entity": {
        "software_specification": {
          "type": "base",
          "built_in": false,
          "package_extensions": [],
          "display_name": "test sw spec base 0.1.40-amd64",
          "software_configuration": {
            "included_packages": [
              {
                "name": "scikit-learn",
                "version": "0.23"
              },
              {
                "name": "pytorch-onnx",
                "version": "1.3"
              },
              {
                "name": "tensorflow",
                "version": "2.1"
              },
              {
                "name": "gensim",
                "version": "3.8.0"
              }         
            ],
            "platform": {
              "name": "python",
              "version": "3.7"
            } 
          }
        }
      }
    }
    
  6. Laden Sie die neue Softwarespezifikation hoch.

    curl -k -X PUT \
    
       $CPDHOST/zen-volumes/$VSNAME/v1/volumes/files/%2F_global_%2Fconfig%2Fenvironments%2Fsoftware-specifications%2F$SW_SPEC_JSON \
    
       -H "Authorization: Bearer $TOKEN" \
    
       -H 'content-type: multipart/form-data' \
    
       -F upFile=@$PATH_SW_SPEC_JSON
    

    Rückgabe:

    {"_messageCode_":"Success","message":"Successfully uploaded file and created the necessary directory structure"}
    

    Stellen Sie sicher, dass die Softwarespezifikationsdatei hochgeladen wurde:

    echo "Uploaded Custom Software Spec file: $SW_SPEC_JSON"
    

    Rückgabe:

    Uploaded Custom Software Spec file: demo-spec-1_py37.json
    
  7. Stellen Sie sicher, dass die Softwarespezifikation auf dem Datenträger verfügbar ist.

    curl -k -X GET \
       $CPDHOST/zen-volumes/$VSNAME/v1/volumes/files/%2F_global_%2Fconfig%2Fenvironments%2Fsoftware-specifications%2F$SW_SPEC_JSON \
       -H "Authorization: Bearer $TOKEN"
    

    Starten Sie den Datenträger erneut.

    curl -k -X DELETE \
      $CPDHOST/zen-data/v1/volumes/volume_services/$VSNAME \
      -H "Authorization: Bearer $TOKEN"
    
    curl -k -X POST \
      $CPDHOST/zen-data/v1/volumes/volume_services/$VSNAME \
      -H "Authorization: Bearer $TOKEN" \
      -H 'Content-Type: application/json' \
      -d '{}'
    
  8. Vergewissern Sie sich, dass die Softwarespezifikation über einen REST-Endpunkt verfügbar ist.

    Listen Sie die verfügbaren Softwarespezifikationen auf.

    curl -k -X GET \
        $CPDHOST/v2/software_specifications?name=$SW_SPEC_NAME \
        -H "Authorization: Bearer $TOKEN" | jq "."
    

    Rückgabe:

    % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                     Dload  Upload   Total   Spent    Left  Speed
    100   727  100   727    0     0    580      0  0:00:01  0:00:01 --:--:--   580
    {
      "total_results": 1,
      "resources": [
        {
      "metadata": {
            "created_at": "2020-10-15T14:36:33.536Z",
            "updated_at": "2020-10-15T14:36:33.536Z",
            "name": "demo-spec-1_py37",
            "description": "Test",
            "asset_type": "software_specification",
            "asset_id": "51301be2-ea21-5848-bb86-bdd86c4b893d",
            "href": "/v2/software_specifications/51301be2-ea21-5848-bb86-bdd86c4b893d"
          },
      "entity": {
            "software_specification": {
              "type": "base",
              "built_in": false,
              "package_extensions": [],
              "display_name": "test sw spec base 0.1.40-amd64",
              "software_configuration": {
                "included_packages": [
                  {
                    "name": "scikit-learn",
                    "version": "0.23"
                  },
                  {
                    "name": "pytorch-onnx",
                    "version": "1.3"
                  },
                  {
                    "name": "tensorflow",
                    "version": "2.1"
                  },
                  {
                    "name": "gensim",
                    "version": "3.8.0"
                  }
                ],
                "platform": {
                  "name": "python",
                  "version": "3.7"
                }
              }
            }
          }
        }
      ]
    }
    

    Nächste Schritte