Usa rete predefinita

Creare una distribuzione modello con l'opzione di rete predefinita.

Il carico di lavoro viene collegato utilizzando una VNIC secondaria a una VCN e a una subnet preconfigurate e gestite dal servizio. Questa subnet fornita consente l'accesso ad altri servizi Oracle Cloud tramite un gateway di servizi, ma non alla rete Internet pubblica.

Se hai bisogno di accedere solo ai servizi OCI, ti consigliamo di utilizzare questa opzione. Non richiede la creazione di risorse di rete o la scrittura di criteri per le autorizzazioni di rete.

Puoi creare ed eseguire distribuzioni di modelli di rete predefiniti utilizzando la console, l'SDK Python OCI, l'interfaccia CLI OCI o l'API Data Science.

    1. Nella pagina Distribuzioni modello, selezionare Crea distribuzione modello. Per informazioni su come trovare l'elenco delle distribuzioni dei modelli, vedere Elenco delle distribuzioni dei modelli.
    2. (Facoltativo) Immettere un nome univoco per il modello (limite di 255 caratteri). Se non si specifica un nome, viene generato automaticamente un nome.

      Ad esempio, modeldeployment20200108222435.

    3. (Facoltativo) Immettere una descrizione (limite di 400 caratteri) per la distribuzione del modello.
    4. (Facoltativo) In Configurazione predefinita, immettere una chiave di variabile di ambiente personalizzata e il valore corrispondente. Selezionare + Tasto di ambiente personalizzato aggiuntivo per aggiungere altre variabili di ambiente.
    5. Nella sezione Modelli, selezionare Seleziona per selezionare un modello attivo da distribuire dal catalogo modelli.
      1. Trovare un modello utilizzando il compartimento e il progetto predefiniti oppure selezionando Utilizzo dell'OCID e cercando il modello immettendo il relativo OCID.
      2. Selezionare il modello.
      3. Selezionare Sottometti.
      Importanti

      Gli artifact di modello che superano i 400 GB non sono supportati per la distribuzione. Selezionare un artifact modello più piccolo per la distribuzione.
    6. (Facoltativo) Modificare la forma di computazione selezionando Modifica forma. Attenersi quindi alla procedura descritta di seguito nel pannello Select compute.
      1. Selezionare un tipo di istanza.
      2. Selezionare una serie di forme.
      3. Selezionare una delle forme di computazione supportate nella serie.
      4. Selezionare la forma più adatta a come si desidera utilizzare la risorsa.

        Per ciascuna OCPU, selezionare fino a 64 GB di memoria e un totale massimo di 512 GB. La quantità minima di memoria consentita è 1 GB o un valore corrispondente al numero di OCPU, a seconda di quale delle due è maggiore.

      5. Selezionare Seleziona forma.
    7. Immettere il numero di istanze per la distribuzione del modello su cui replicare il modello.
    8. Selezionare Networking predefinito per configurare il tipo di rete.
    9. Selezionare una delle opzioni riportate di seguito per configurare il tipo di endpoint.
      • Public endpoint: accesso ai dati in un'istanza gestita dall'esterno di una VCN.
      • Private endpoint: l'endpoint privato che si desidera utilizzare per la distribuzione del modello.
      Se è stato selezionato Private endpoint, selezionare Private Endpoint da Endpoint privato in Data Science.

      Selezionare Modifica compartimento per selezionare il compartimento contenente l'endpoint privato.

    10. (Facoltativo) Se si configura l'accesso o si prevede il log, nella sezione Log selezionare Seleziona, quindi attenersi alla procedura riportata di seguito.
      1. Per i log degli accessi, selezionare un compartimento, un gruppo di log e un nome di log.
      2. Per i log di previsione, selezionare un compartimento, un gruppo di log e un nome di log.
      3. Selezionare Sottometti.
    11. (Facoltativo) Selezionare Mostra opzioni avanzate per aggiungere tag.
      1. (Facoltativo) Selezionare la modalità di servizio per la distribuzione del modello, come endpoint HTTPS o utilizzando un flusso di servizi di streaming.
      2. (Facoltativo) Selezionare la larghezza di banda di bilanciamento del carico in Mbps o utilizzare l'impostazione predefinita 10 Mbps.

        Suggerimenti per il bilanciamento del carico:

        Se si conoscono la dimensione del payload comune e la frequenza delle richieste al secondo, è possibile utilizzare la formula riportata di seguito per stimare la larghezza di banda del load balancer di cui si ha bisogno. Ti consigliamo di aggiungere un ulteriore 20% per tenere conto degli errori di stima e dei picchi di traffico sporadici.

        (Dimensione payload in KB) * (Richieste stimate al secondo) * 8 / 1024

        Ad esempio, se il payload è di 1.024 KB e si stimano 120 richieste al secondo, la larghezza di banda consigliata per il load balancer sarà (1024 * 120 * 8 / 1024) * 1,2 = 1152 Mbps.

        Tenere presente che la dimensione massima del payload supportato è di 10 MB quando si tratta di payload di immagini.

        Se la dimensione del payload della richiesta è maggiore della larghezza di banda allocata del load balancer definito, la richiesta viene rifiutata con un codice di stato 429.

      3. (Facoltativo) Selezionare Usa un'immagine contenitore personalizzata e immettere quanto segue:
        • Repository in <tenancy>: il repository che contiene l'immagine personalizzata.

        • Immagine: l'immagine personalizzata da utilizzare nella distribuzione del modello in runtime.

        • CMD: ulteriori comandi da eseguire all'avvio del contenitore. Aggiungere un'istruzione per casella di testo. Ad esempio, se CMD è ["--host", "0.0.0.0"], passare --host in una casella di testo e 0.0.0.0 in un'altra. Non utilizzare le virgolette alla fine.

        • Punto di ingresso: uno o più file del punto di ingresso da eseguire all'avvio del contenitore. Ad esempio, /opt/script/entrypoint.sh. Non utilizzare le virgolette alla fine.

        • Porta server: la porta su cui è in esecuzione il server Web che gestisce l'inferenza. Il valore predefinito è 8080. Il porto può essere qualsiasi cosa tra 1024 e 65535. Non utilizzare le porte 24224, 8446, 8447.

        • Porta di controllo dello stato: la porta su cui il contenitore HEALTHCHECK ascolta. Il valore predefinito è la porta del server. Il porto può essere qualsiasi cosa tra 1024 e 65535. Non utilizzare le porte 24224, 8446, 8447.

      4. (Facoltativo) Nella sezione Tag aggiungere una o più tag a <resourceType>. Se si dispone delle autorizzazioni per creare una risorsa, si dispone anche delle autorizzazioni per applicare le tag in formato libero a tale risorsa. Per applicare una tag definita, è necessario disporre delle autorizzazioni per utilizzare la tag namespace. Per ulteriori informazioni sull'applicazione di tag, vedere Tag risorsa. Se non si è certi di applicare le tag, saltare questa opzione o chiedere a un amministratore. È possibile applicare le tag in un secondo momento.
    12. Selezionare Crea.
  • È possibile utilizzare l'interfaccia CLI OCI per creare una distribuzione modello come in questo esempio.

    1. Distribuisce il modello con:
      oci data-science model-deployment create \
      --compartment-id <MODEL_DEPLOYMENT_COMPARTMENT_OCID> \
      --model-deployment-configuration-details file://<MODEL_DEPLOYMENT_CONFIGURATION_FILE> \
      --project-id <PROJECT_OCID> \
      --category-log-details file://<OPTIONAL_LOGGING_CONFIGURATION_FILE> \
      --display-name <MODEL_DEPLOYMENT_NAME>
    2. Utilizzare questo file di configurazione JSON di distribuzione modello:
      {
            "deploymentType": "SINGLE_MODEL",
            "modelConfigurationDetails": {
              "bandwidthMbps": <YOUR_BANDWIDTH_SELECTION>,
              "instanceConfiguration": {
                "instanceShapeName": "<YOUR_VM_SHAPE>"
              },
              "modelId": "<YOUR_MODEL_OCID>",
              "scalingPolicy": {
                  "instanceCount": <YOUR_INSTANCE_COUNT>,
                  "policyType": "FIXED_SIZE"
               }
           }
       }

      Se si specifica una configurazione di ambiente, è necessario includere l'oggetto environmentConfigurationDetails come nell'esempio riportato di seguito.

      
      {
        "modelDeploymentConfigurationDetails": {
          "deploymentType": "SINGLE_MODEL",
          "modelConfigurationDetails": {
            "modelId": "ocid1.datasciencemodel.oc1.iad........",
            "instanceConfiguration": {
              "instanceShapeName": "VM.Standard.E4.Flex",
              "modelDeploymentInstanceShapeConfigDetails": {
                "ocpus": 1,
                "memoryInGBs": 16
              }
            },
            "scalingPolicy": {
              "policyType": "FIXED_SIZE",
              "instanceCount": 1
            },
            "bandwidthMbps": 10
          },
          "environmentConfigurationDetails" : {
            "environmentConfigurationType": "OCIR_CONTAINER",
            "image": "iad.ocir.io/testtenancy/image_name:1.0.0",
            "entrypoint": [
              "python",
              "/opt/entrypoint.py"
            ],
            "serverPort": "5000",
            "healthCheckPort": "5000"
          },
          "streamConfigurationDetails": {
            "inputStreamIds": null,
            "outputStreamIds": null
          }
        }
      }
    3. (Facoltativo) Utilizzare questo file di configurazione JSON di log:
      {
          "access": {
            "logGroupId": "<YOUR_LOG_GROUP_OCID>",
            "logId": "<YOUR_LOG_OCID>"
          },
          "predict": {
            "logGroupId": "<YOUR_LOG_GROUP_OCID>",
            "logId": "<YOUR_LOG_OCID>"
          }
      }
    4. (Facoltativo) Utilizzare questa opzione per utilizzare un contenitore personalizzato:
      oci data-science model-deployment create \
      --compartment-id <MODEL_DEPLOYMENT_COMPARTMENT_OCID> \
      --model-deployment-configuration-details file://<MODEL_DEPLOYMENT_CONFIGURATION_FILE> \
      --project-id <PROJECT_OCID> \
      --category-log-details file://<OPTIONAL_LOGGING_CONFIGURATION_FILE> \
      --display-name <MODEL_DEPLOYMENT_NAME>
  • Utilizzare l'operazione CreateModelDeployment per creare una distribuzione del modello.

Uso dell'SDK Python OCI

Abbiamo sviluppato un esempio di distribuzione del modello di SDK OCI Python che include l'autenticazione.

Importante

Gli artifact che superano i 400 GB non sono supportati per la distribuzione. Selezionare un artifact modello più piccolo per la distribuzione.
Nota

Prima di creare una distribuzione con l'SDK Python, è necessario eseguire l'upgrade dell'SDK OCI alla versione 2.33.0 o successiva. Utilizzare il seguente comando:

pip install --upgrade oci

Utilizzare questo esempio per creare una distribuzione modello che utilizza un contenitore personalizzato.

# create a model configuration details object
model_config_details = ModelConfigurationDetails(
    model_id=<model-id>,
    bandwidth_mbps=<bandwidth-mbps>,
    instance_configuration=<instance-configuration>,
    scaling_policy=<scaling-policy>
)
 
# create the container environment configiguration
environment_config_details = OcirModelDeploymentEnvironmentConfigurationDetails(
    environment_configuration_type="OCIR_CONTAINER",
    environment_variables={'key1': 'value1', 'key2': 'value2'},
    image="iad.ocir.io/testtenancy/ml_flask_app_demo:1.0.0",
    image_digest="sha256:243590ea099af4019b6afc104b8a70b9552f0b001b37d0442f8b5a399244681c",
    entrypoint=[
        "python",
        "/opt/ds/model/deployed_model/api.py"
    ],
    server_port=5000,
    health_check_port=5000
)
 
# create a model type deployment
single_model_deployment_config_details = data_science.models.SingleModelDeploymentConfigurationDetails(
    deployment_type="SINGLE_MODEL",
    model_configuration_details=model_config_details,
    environment_configuration_details=environment_config_details
)
 
# set up parameters required to create a new model deployment.
create_model_deployment_details = CreateModelDeploymentDetails(
    display_name=<deployment_name>,
    model_deployment_configuration_details=single_model_deployment_config_details,
    compartment_id=<compartment-id>,
    project_id=<project-id>
)

Esempi di notebook

Sono stati forniti vari esempi di notebook che mostrano come addestrare, preparare, salvare, distribuire e richiamare le distribuzioni di modelli.