

Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.

# API-Codebeispiele für den Import benutzerdefinierter Modelle
<a name="custom-model-import-code-samples"></a>

Die folgenden Codebeispiele verdeutlichen, wie Sie Berechtigungen einrichten, einen Importauftrag für benutzerdefinierte Modelle erstellen, die Details zu Ihren Importaufträgen und importierten Modellen anzeigen sowie importierte Modelle löschen. Diese Codebeispiele gelten fürMistral AI,Llama,Qwen, FlanGPTBigCode, und Mixtral Architekturen.

## Wichtig: Support der Modellarchitektur
<a name="model-architecture-support"></a>

**GPT-OSSEinschränkungen des Modells:**
+ **Converse-API wird nicht unterstützt:** GPT-OSS Auf der Grundlage benutzerdefinierter Modellimportmodelle werden die Converse API oder ConverseStream API NICHT unterstützt.
+ **Stattdessen InvokeModel API verwenden:** Kunden müssen die [InvokeModel](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_runtime_InvokeModel.html)API verwenden, wenn sie mit GPT-OSS basierten benutzerdefinierten Modellen arbeiten.
+ **API-Schemaanforderung:** GPT-OSS Modelle benötigen OpenAI-kompatible API-Schemas:
  + Abschlussformat für Fertigstellungsanfragen
  + ChatCompletion Format für Chat-Anfragen
  + Das Antwortformat entspricht den OpenAI-API-Spezifikationen
+ **Unterstützte Modelle für die Converse-API:** Die Converse-API wird nur fürMistral AI,, Llama Qwen FlanGPTBigCode, und Mixtral Architekturen unterstützt.

Beispiele zur GPT-OSS Modellnutzung mit [InvokeModel](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_runtime_InvokeModel.html)API finden Sie in der OpenAI-API-Dokumentation für request/response Schemas.

1. Vorbereiten der Modelldateien für den Import

   1. Wenn Sie Ihr Modell aus einem Amazon-S3-Bucket importieren, müssen Sie die Modelldateien im Gewichtungsformat Hugging Face angeben. Weitere Informationen finden Sie unter [Importieren einer Modellquelle aus Amazon S3](model-customization-import-model.md#model-customization-import-model-source). 

   1. Erstellen Sie einen Amazon-S3-Bucket für Ihre Modelldateien (die Namen müssen eindeutig sein).

   1. Laden Sie die Modelldateien in den Bucket hoch.

1. Erstellen Sie eine Richtlinie für den Zugriff auf Ihre Modelldateien und fügen Sie sie einer IAM-Rolle mit einer Amazon-Bedrock-Vertrauensstellung hinzu. Wählen Sie die Registerkarte für Ihre bevorzugte Methode aus und führen Sie dann die folgenden Schritte aus:

------
#### [ Console ]

   1. Erstellen einer Amazon-S3-Richtlinie für den Zugriff auf den Amazon-S3-Bucket, der die Modelldateien enthält

      1. Navigieren Sie unter [https://console.aws.amazon.com/iam zur IAM-Konsole und wählen Sie im linken](https://console.aws.amazon.com/iam) Navigationsbereich **Richtlinien** aus.

      1. Wählen Sie **Richtlinie erstellen** und anschließend **JSON** aus, um den **Richtlinien-Editor** zu öffnen.

      1. **Fügen Sie die folgende Richtlinie ein und {{${model-file-bucket}}} ersetzen Sie sie durch Ihren Bucket-Namen, und wählen Sie dann Weiter aus.**

------
#### [ JSON ]

****  

         ```
         {
             "Version":"2012-10-17",		 	 	 
             "Statement": [
                 {
                     "Effect": "Allow",
                     "Action": [
                         "s3:GetObject",
                         "s3:ListBucket"
                     ],
                     "Resource": [
                         "arn:aws:s3:::{{${model-file-bucket}}}",
                         "arn:aws:s3:::{{${model-file-bucket}}}/*"
                     ]
                   }
                 ]
               }
         ```

------

      1. Geben Sie der Richtlinie einen Namen {{S3BucketPolicy}} und wählen Sie **Richtlinie erstellen** aus.

   1. Erstellen Sie eine IAM-Rolle und fügen Sie die Richtlinie an.

      1. Wählen Sie im linken Navigationsbereich die Option **Rollen** und dann **Rolle erstellen** aus.

      1. Wählen Sie die Option **Benutzerdefinierte Vertrauensrichtlinie** aus, fügen Sie die folgende Richtlinie ein und wählen Sie dann **Weiter** aus.

------
#### [ JSON ]

****  

         ```
         {
             "Version":"2012-10-17",		 	 	 
             "Statement": [
                 {
                     "Effect": "Allow",
                     "Principal": {
                         "Service": "bedrock.amazonaws.com"
                     },
                     "Action": "sts:AssumeRole"
                 }
             ] 
         }
         ```

------

      1. Suchen Sie nach der {{S3BucketPolicy}} Richtlinie, die Sie erstellt haben, aktivieren Sie das Kontrollkästchen und wählen Sie **Weiter**.

      1. Geben Sie der Rolle einen Namen {{MyImportModelRole}} und wählen Sie{{Create role}}.

------
#### [ CLI ]

   1. Erstellen Sie eine Datei mit dem Namen {{BedrockTrust.json}} und fügen Sie die folgende Richtlinie ein.

------
#### [ JSON ]

****  

      ```
      {
          "Version":"2012-10-17",		 	 	 
          "Statement": [
              {
                  "Effect": "Allow",
                  "Principal": {
                      "Service": "bedrock.amazonaws.com"
                  },
                  "Action": "sts:AssumeRole"
              }
          ] 
      }
      ```

------

   1. Erstellen Sie eine weitere Datei mit dem Namen {{S3BucketPolicy.json}} und fügen Sie die folgende Richtlinie ein, {{${model-file-bucket}}} wobei Sie sie durch Ihre Bucket-Namen ersetzen.

------
#### [ JSON ]

****  

      ```
      {
          "Version":"2012-10-17",		 	 	 
          "Statement": [
              {
                  "Effect": "Allow",
                  "Action": [
                      "s3:GetObject",
                      "s3:ListBucket"
                  ],
                  "Resource": [
                      "arn:aws:s3:::{{${model-file-bucket}}}",
                      "arn:aws:s3:::{{${model-file-bucket}}}/*"
                  ]
              }
           ]
      }
      ```

------

   1. Navigieren Sie in einem Terminalfenster zu dem Ordner, der die von Ihnen erstellten Richtlinien enthält.

   1. Stellen Sie eine [CreateRole](https://docs.aws.amazon.com/IAM/latest/APIReference/API_CreateRole.html)Anfrage zur Erstellung einer IAM-Rolle mit dem Namen {{MyImportModelRole}} und fügen Sie die von Ihnen erstellte {{BedrockTrust.json}} Vertrauensrichtlinie hinzu.

      ```
      aws iam create-role \
          --role-name MyImportModelRole \
          --assume-role-policy-document file://BedrockTrust.json
      ```

   1. Stellen Sie eine [CreatePolicy](https://docs.aws.amazon.com/IAM/latest/APIReference/API_CreatePolicy.html)Anfrage zur Erstellung der S3-Datenzugriffsrichtlinie mit der von Ihnen erstellten {{S3BucketPolicy.json}} Datei. Die Antwort gibt den Parameter `Arn` für die Richtlinie zurück.

      ```
      aws iam create-policy \
          --policy-name S3BucketPolicy \
          --policy-document file://S3BucketPolicy.json
      ```

   1. Stellen Sie eine [AttachRolePolicy](https://docs.aws.amazon.com/IAM/latest/APIReference/API_AttachRolePolicy.html)Anfrage, um die S3-Datenzugriffsrichtlinie an Ihre Rolle anzuhängen, und ersetzen Sie die in der Antwort aus dem vorherigen Schritt durch den ARN: `policy-arn`

      ```
      aws iam attach-role-policy \
          --role-name MyImportModelRole \
          --policy-arn {{${policy-arn}}}
      ```

------
#### [ Python ]

   1. Führen Sie den folgenden Code aus, um eine [CreateRole](https://docs.aws.amazon.com/IAM/latest/APIReference/API_CreateRole.html)Anfrage zur Erstellung einer IAM-Rolle namens zu stellen {{MyImportModel}} und um eine [CreatePolicy](https://docs.aws.amazon.com/IAM/latest/APIReference/API_CreatePolicy.html)Anfrage zur Erstellung einer S3-Datenzugriffsrichtlinie namens {{S3BucketPolicy}} zu stellen. Ersetzen Sie die S3-Datenzugriffsrichtlinie {{${model-file-bucket}}} durch Ihre S3-Bucket-Namen.

      ```
      import boto3
      import json
      
      iam = boto3.client("iam")
      
      iam.create_role(
          RoleName="MyImportModelRole",
          AssumeRolePolicyDocument=json.dumps({
              "Version": "2012-10-17",		 	 	 
              "Statement": [
                  {
                      "Effect": "Allow",
                      "Principal": {
                          "Service": "bedrock.amazonaws.com"
                      },
                      "Action": "sts:AssumeRole"
                  }
              ] 
          })
      )
      
      iam.create_policy(
          PolicyName="S3BucketPolicy",
          PolicyDocument=json.dumps({
              "Version": "2012-10-17",		 	 	 
              "Statement": [
                  {
                      "Effect": "Allow",
                      "Action": [
                          "s3:GetObject",
                          "s3:ListBucket"
                      ],
                      "Resource": [
                          "arn:aws:s3:::{{${training-bucket}}}",
                          "arn:aws:s3:::{{${training-bucket}}}/*"
                      ]
                  }
                ]
             })
           )
      ```

   1. In der Antwort wird der Parameter `Arn` zurückgegeben. Führen Sie den folgenden Codeausschnitt aus, um eine [AttachRolePolicy](https://docs.aws.amazon.com/IAM/latest/APIReference/API_AttachRolePolicy.html)Anfrage zu stellen, und {{${policy-arn}}} ersetzen Sie ihn durch den zurückgegebenen. `Arn`

      ```
      iam.attach_role_policy(
          RoleName="MyImportModelRole",
          PolicyArn="{{${policy-arn}}}"
      )
      ```

------

1. Wählen Sie eine Sprache aus, in der Codebeispiele zum Aufrufen der API-Vorgänge für den Import von benutzerdefinierten Modellen angezeigt werden sollen.

------
#### [ CLI ]

Um einen benutzerdefinierten Modellimportauftrag einzureichen, führen Sie in einem Terminal den folgenden Befehl in der Befehlszeile aus und {{${my-import-model-role-arn}}} ersetzen Sie ihn durch die von Ihnen eingerichtete Modellrolle und den {{s3-bucket-path}} S3-Bucket-Pfad Ihrer Modelldateien.

```
aws bedrock create-model-import-job 
    --job-name {{MyImportedModelJobName}}
    --imported-model-name {{MyImportedModelName}}
    --role-arn {{${my-import-model-role-arn}}}  
    --model-data-source '{"s3DataSource": {"s3Uri": {{s3-bucket-path}} }}
```

In der Antwort wird ein {{jobArn}} zurückgegeben. Die Ausführung eines benutzerdefinierten Importauftrags kann einige Zeit in Anspruch nehmen. Sie können den Parameter `jobArn` mit dem folgenden Befehl verwenden, um den Status des Importauftrags zu überprüfen.

Die folgenden Felder sind optional:
+ Wenn Sie eine VPC-Konfiguration hinzufügen möchten, nehmen Sie das folgende Argument in den obigen Befehl auf, um die Sicherheitsgruppe und die Subnetze anzugeben:

  ```
     -\\-vpc-config '{securityGroupIds": ["sg-xx"], "subnetIds": ["subnet-yy", "subnet-zz"]}'
  ```
+ Wenn Sie Ihr Modell mit einem KMS-Schlüssel verschlüsseln möchten, fügen Sie dem obigen Befehl das folgende Argument hinzu und ersetzen Sie dabei die Werte, um den Schlüssel anzugeben, mit dem Sie Ihr Modell verschlüsseln möchten.

  ```
     -\\-customModelKmsKeyId 'arn:aws:kms:{{region}}:{{account-id}}:key/{{key-id}}'
  ```
+ Um Tags hinzuzufügen, fügen Sie dem obigen Befehl das folgende Argument hinzu. Ersetzen Sie dabei die Schlüssel und Werte durch die Tags, die Sie an das and/or Job-Ausgabemodell anhängen möchten, und achten Sie darauf, die key/value Paare durch ein Leerzeichen zu trennen:

  ```
     -\\-tags key={{key1}},value={{value1}} key={{key2}},value={{value2}}
  ```

In der Antwort wird ein {{jobArn}} zurückgegeben. Die Ausführung eines benutzerdefinierten Importauftrags kann einige Zeit in Anspruch nehmen. Sie können den Parameter `jobArn` mit dem folgenden Befehl verwenden, um den Status des Importauftrags zu überprüfen.

```
aws bedrock get-model-import-job \
    --job-identifier "{{jobArn}}"
```

Die Antwort sieht in etwa wie folgt aus:

```
{
    "jobArn": {{${job-arn}}} ,
    "jobName": {{MyImportedModelJobName}},
    "importedModelName": {{MyImportedModelName}},
    "roleArn": {{${my-role-arn}}},
    "modelDataSource": {
        "s3DataSource": {
            "s3Uri": "${S3Uri}"
        }
    },
    "status": "Complete",
    "creationTime": "2024-08-13T23:38:42.457Z",
    "lastModifiedTime": "2024-08-13T23:39:25.158Z"
```

Wenn der `status` `Complete` lautet, wurde der Importauftrag abgeschlossen.

Um Inferenzen für Ihr neu importiertes Modell auszuführen, müssen Sie den ARN des importierten Modells als `model-id` angeben. Rufen Sie den ARN des importierten Modells ab.

```
aws bedrock list-imported-models              
```

Die Antwort enthält den Namen und den ARN des Modells. Verwenden Sie den Modell-ARN, um das importierte Modell aufzurufen. Weitere Informationen finden Sie unter [Senden Sie eine einzelne Aufforderung mit InvokeModel](inference-invoke.md).

```
{
    "modelSummaries": [
        {
            "modelArn": {{model-arn}},
            "modelName": "MyImportedModelName",
            "modelArchitecture":{{model-architecture}},
            "instructSupported":{{Y}},
            "creationTime": "2024-08-13T19:20:14.058Z"
            
        }
    ]
}
```

Um das importierte Modell zu löschen, führen Sie in einem Terminalfenster den folgenden Befehl in der Befehlszeile aus und verwenden Sie dabei den Namen oder den ARN des importierten Modells, das Sie löschen möchten.

```
aws bedrock delete-imported-model 
                --model-identifier {{MyImportedModelName}}
```

------
#### [ Python ]

Führen Sie den folgenden Codeausschnitt aus, um einen Importauftrag für benutzerdefinierte Modelle zu übermitteln. {{my-region}}Ersetzen Sie durch die Region, in die Sie das Modell importiert haben, {{${my-import-model-role-arn}}} durch den ARN der Region, {{MyImportModelRole}} die Sie eingerichtet haben, und {{${model-file-bucket}}} ersetzen Sie sie durch Ihren S3-Bucket-Namen.

```
import boto3
import json

REGION_NAME = {{my-region}}
bedrock = boto3.client(service_name='bedrock',
                       region_name=REGION_NAME)

JOB_NAME = {{MyImportedModelJobName}} 
ROLE_ARN = {{${my-import-model-role-arn}}}
IMPORTED_MODEL_NAME = {{ImportedModelName}}
S3_URI = {{${S3Uri}}}

# createModelImportJob API
create_job_response = bedrock.create_model_import_job(
    jobName=JOB_NAME,
    importedModelName=IMPORTED_MODEL_NAME,
    roleArn=ROLE_ARN,
    modelDataSource={
        "s3DataSource": {
            "s3Uri": S3_URI
        }
    },
)
job_arn = create_job_response.get("jobArn")
```

Die folgenden Felder sind optional.
+ Wenn Sie eine VPC-Konfiguration hinzufügen möchten, nehmen Sie das folgende Argument in den obigen Befehl auf, um die Sicherheitsgruppe und die Subnetze anzugeben:

  ```
     vpc-config = {'securityGroupIds: ["sg-xx".], 'subnetIds': [subnet-yy, 'subnet-zz']}'
  ```
+ Wenn Sie Ihr Modell mit einem KMS-Schlüssel verschlüsseln möchten, fügen Sie dem obigen Befehl das folgende Argument hinzu und ersetzen Sie dabei die Werte, um den Schlüssel anzugeben, mit dem Sie Ihr Modell verschlüsseln möchten.

  ```
     importedModelKmsKeyId = 'arn:aws:kms:{{region}}:{{account-id}}:key/{{key-id}}'
  ```
+ Um Tags hinzuzufügen, fügen Sie dem obigen Befehl das folgende Argument hinzu. Ersetzen Sie dabei die Schlüssel und Werte durch die Tags, die Sie an das and/or Job-Ausgabemodell anhängen möchten, und achten Sie darauf, die key/value Paare durch ein Leerzeichen zu trennen:

  ```
     jobTags key={{key1}},value={{value1}} key={{key2}},value={{value2}}
  ```

In der Antwort wird der Parameter „jobArn“ zurückgegeben.

```
               job_arn = create_job_response.get("{{jobArn}}")
```

Die Ausführung eines benutzerdefinierten Importauftrags kann einige Zeit in Anspruch nehmen. Sie können den Parameter `jobArn` mit dem folgenden Befehl verwenden, um den Status des Importauftrags zu überprüfen.

```
bedrock.get_model_import_job(jobIdentifier={{jobArn}})
```

Wenn der `status` `Completed` lautet, wurde der Importauftrag abgeschlossen.

Um Inferenzen für Ihr neu importiertes Modell auszuführen, müssen Sie den ARN des importierten Modells als `model-id` angeben. Rufen Sie den ARN des importierten Modells ab.

```
response_pt = bedrock.list_imported_models(
    creationTimeBefore=datetime ({{2015,1,1}},
    creationTimeAfter= datetime ({{2015,1,1}},
    nameContains = '{{MyImportedModelName}},
    maxresults = {{123}}
    nextToken = '{{none}}',
    sortBy = '{{creationTime}}',
    sortOrder = '{{Ascending}}'
```

In der Antwort wird der Parameter `modelArn` zusammen mit anderen Details des importierten Modells zurückgegeben. 

```
{
    'nextToken': '',
    'modelSummaries': [
        {
            'modelArn': '{{your-model-arn}}',
            'modelName': '{{MyImportedModelName}}',
            'modelArchitecture':{{model-architecture}},
            'instructSupported':{{Y}},
            'creationTime': datetime(2015, 1, 1)
        },
    ]
```

Verwenden Sie den Modell-ARN, um das importierte Modell aufzurufen. Weitere Informationen finden Sie unter [Senden Sie eine einzelne Aufforderung mit InvokeModel](inference-invoke.md).

Um das importierte Modell zu löschen, verwenden Sie den folgenden Befehl unter Angabe des Namens oder der ARN des importierten Modells, das Sie löschen möchten.

```
response = client.delete_imported_model(
    modelIdentifier='{{MyImportedModelName}}'
            )
```

------