

本文為英文版的機器翻譯版本，如內容有任何歧義或不一致之處，概以英文版為準。

# 使用 `modeltransform` 命令進行模型轉換
<a name="machine-learning-api-modeltransform"></a>

您可以使用 Neptune ML `modeltransform` 命令來建立模型轉換工作、檢查其狀態、停止該工作，或列出所有作用中的模型轉換工作。

## 使用 Neptune ML `modeltransform` 命令建立模型轉換工作
<a name="machine-learning-api-modeltransform-create-job"></a>

用於建立增量轉換工作而不需模型重新訓練的 Neptune ML `modeltransform` 命令如下所示：

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

```
aws neptunedata start-ml-model-transform-job \
  --endpoint-url https://{{your-neptune-endpoint}}:{{port}} \
  --id "{{(a unique model-transform job ID)}}" \
  --data-processing-job-id "{{(the job-id of a completed data-processing job)}}" \
  --ml-model-training-job-id "{{(the job-id of a completed model-training job)}}" \
  --model-transform-output-s3-location "s3://{{(your S3 bucket)}}/neptune-model-transform"
```

如需詳細資訊，請參閱《 AWS CLI 命令參考》中的 [start-ml-model-transform-job](https://docs.aws.amazon.com/cli/latest/reference/neptunedata/start-ml-model-transform-job.html)。

------
#### [ SDK ]

```
import boto3
from botocore.config import Config

client = boto3.client(
    'neptunedata',
    endpoint_url='https://{{your-neptune-endpoint}}:{{port}}',
    config=Config(read_timeout=None, retries={'total_max_attempts': 1})
)

response = client.start_ml_model_transform_job(
    id='{{(a unique model-transform job ID)}}',
    dataProcessingJobId='{{(the job-id of a completed data-processing job)}}',
    mlModelTrainingJobId='{{(the job-id of a completed model-training job)}}',
    modelTransformOutputS3Location='s3://{{(your S3 bucket)}}/neptune-model-transform'
)

print(response)
```

------
#### [ awscurl ]

```
awscurl https://{{your-neptune-endpoint}}:{{port}}/ml/modeltransform \
  --region {{us-east-1}} \
  --service neptune-db \
  -X POST \
  -H 'Content-Type: application/json' \
  -d '{
        "id" : "{{(a unique model-transform job ID)}}",
        "dataProcessingJobId" : "{{(the job-id of a completed data-processing job)}}",
        "mlModelTrainingJobId" : "{{(the job-id of a completed model-training job)}}",
        "modelTransformOutputS3Location" : "s3://{{(your S3 bucket)}}/neptune-model-transform"
      }'
```

**注意**  
此範例假設您的 AWS 登入資料已在您的環境中設定。將 {{us-east-1}} 取代為 Neptune 叢集的區域。

------
#### [ curl ]

```
curl \
  -X POST https://{{your-neptune-endpoint}}:{{port}}/ml/modeltransform \
  -H 'Content-Type: application/json' \
  -d '{
        "id" : "{{(a unique model-transform job ID)}}",
        "dataProcessingJobId" : "{{(the job-id of a completed data-processing job)}}",
        "mlModelTrainingJobId" : "{{(the job-id of a completed model-training job)}}",
        "modelTransformOutputS3Location" : "s3://{{(your S3 bucket)}}/neptune-model-transform"
      }'
```

------

用於從已完成的 SageMaker AI 訓練任務建立任務的 Neptune ML `modeltransform`命令如下所示：

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

```
aws neptunedata start-ml-model-transform-job \
  --endpoint-url https://{{your-neptune-endpoint}}:{{port}} \
  --id "{{(a unique model-transform job ID)}}" \
  --training-job-name "{{(name of a completed SageMaker training job)}}" \
  --model-transform-output-s3-location "s3://{{(your S3 bucket)}}/neptune-model-transform"
```

如需詳細資訊，請參閱《 AWS CLI 命令參考》中的 [start-ml-model-transform-job](https://docs.aws.amazon.com/cli/latest/reference/neptunedata/start-ml-model-transform-job.html)。

------
#### [ SDK ]

```
import boto3
from botocore.config import Config

client = boto3.client(
    'neptunedata',
    endpoint_url='https://{{your-neptune-endpoint}}:{{port}}',
    config=Config(read_timeout=None, retries={'total_max_attempts': 1})
)

response = client.start_ml_model_transform_job(
    id='{{(a unique model-transform job ID)}}',
    trainingJobName='{{(name of a completed SageMaker training job)}}',
    modelTransformOutputS3Location='s3://{{(your S3 bucket)}}/neptune-model-transform'
)

print(response)
```

------
#### [ awscurl ]

```
awscurl https://{{your-neptune-endpoint}}:{{port}}/ml/modeltransform \
  --region {{us-east-1}} \
  --service neptune-db \
  -X POST \
  -H 'Content-Type: application/json' \
  -d '{
        "id" : "{{(a unique model-transform job ID)}}",
        "trainingJobName" : "{{(name of a completed SageMaker training job)}}",
        "modelTransformOutputS3Location" : "s3://{{(your S3 bucket)}}/neptune-model-transform"
      }'
```

**注意**  
此範例假設您的 AWS 登入資料已在您的環境中設定。將 {{us-east-1}} 取代為 Neptune 叢集的區域。

------
#### [ curl ]

```
curl \
  -X POST https://{{your-neptune-endpoint}}:{{port}}/ml/modeltransform \
  -H 'Content-Type: application/json' \
  -d '{
        "id" : "{{(a unique model-transform job ID)}}",
        "trainingJobName" : "{{(name of a completed SageMaker training job)}}",
        "modelTransformOutputS3Location" : "s3://{{(your S3 bucket)}}/neptune-model-transform"
      }'
```

------

用於建立一個工作，使用自訂模型實作的 Neptune ML `modeltransform` 命令如下所示：

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

```
aws neptunedata start-ml-model-transform-job \
  --endpoint-url https://{{your-neptune-endpoint}}:{{port}} \
  --id "{{(a unique model-transform job ID)}}" \
  --training-job-name "{{(name of a completed SageMaker training job)}}" \
  --model-transform-output-s3-location "s3://{{(your Amazon S3 bucket)}}/neptune-model-transform/" \
  --custom-model-transform-parameters '{
    "sourceS3DirectoryPath": "s3://{{(your Amazon S3 bucket)}}/{{(path to your Python module)}}",
    "transformEntryPointScript": "{{(your transform script entry-point name in the Python module)}}"
  }'
```

如需詳細資訊，請參閱《 AWS CLI 命令參考》中的 [start-ml-model-transform-job](https://docs.aws.amazon.com/cli/latest/reference/neptunedata/start-ml-model-transform-job.html)。

------
#### [ SDK ]

```
import boto3
from botocore.config import Config

client = boto3.client(
    'neptunedata',
    endpoint_url='https://{{your-neptune-endpoint}}:{{port}}',
    config=Config(read_timeout=None, retries={'total_max_attempts': 1})
)

response = client.start_ml_model_transform_job(
    id='{{(a unique model-transform job ID)}}',
    trainingJobName='{{(name of a completed SageMaker training job)}}',
    modelTransformOutputS3Location='s3://{{(your Amazon S3 bucket)}}/neptune-model-transform/',
    customModelTransformParameters={
        'sourceS3DirectoryPath': 's3://{{(your Amazon S3 bucket)}}/{{(path to your Python module)}}',
        'transformEntryPointScript': '{{(your transform script entry-point name in the Python module)}}'
    }
)

print(response)
```

------
#### [ awscurl ]

```
awscurl https://{{your-neptune-endpoint}}:{{port}}/ml/modeltransform \
  --region {{us-east-1}} \
  --service neptune-db \
  -X POST \
  -H 'Content-Type: application/json' \
  -d '{
        "id" : "{{(a unique model-transform job ID)}}",
        "trainingJobName" : "{{(name of a completed SageMaker training job)}}",
        "modelTransformOutputS3Location" : "s3://{{(your Amazon S3 bucket)}}/neptune-model-transform/",
        "customModelTransformParameters" : {
          "sourceS3DirectoryPath": "s3://{{(your Amazon S3 bucket)}}/{{(path to your Python module)}}",
          "transformEntryPointScript": "{{(your transform script entry-point name in the Python module)}}"
        }
      }'
```

**注意**  
此範例假設您的 AWS 登入資料已在您的環境中設定。將 {{us-east-1}} 取代為 Neptune 叢集的區域。

------
#### [ curl ]

```
curl \
  -X POST https://{{your-neptune-endpoint}}:{{port}}/ml/modeltransform \
  -H 'Content-Type: application/json' \
  -d '{
        "id" : "{{(a unique model-transform job ID)}}",
        "trainingJobName" : "{{(name of a completed SageMaker training job)}}",
        "modelTransformOutputS3Location" : "s3://{{(your Amazon S3 bucket)}}/neptune-model-transform/",
        "customModelTransformParameters" : {
          "sourceS3DirectoryPath": "s3://{{(your Amazon S3 bucket)}}/{{(path to your Python module)}}",
          "transformEntryPointScript": "{{(your transform script entry-point name in the Python module)}}"
        }
      }'
```

------

**用於建立 `modeltransform` 工作的參數**
+ **`id`** – (*選用*) 新工作的唯一識別符。

  *類型*：字串 *預設值*：自動產生的 UUID。
+ **`dataProcessingJobId`** – 已完成資料處理工作的工作 ID。

  *類型*：字串

  *附註*：您必須同時包含 `dataProcessingJobId` 和 `mlModelTrainingJobId` 或 `trainingJobName`。
+ **`mlModelTrainingJobId`** – 已完成模型訓練工作的工作 ID。

  *類型*：字串

  *附註*：您必須同時包含 `dataProcessingJobId` 和 `mlModelTrainingJobId` 或 `trainingJobName`。
+ **`trainingJobName`**   –   完成的 SageMaker AI 訓練任務的名稱。

  *類型*：字串

  *注意*：您必須同時包含 `dataProcessingJobId` 和 `mlModelTrainingJobId` 參數或包含 `trainingJobName` 參數。
+ **`sagemakerIamRoleArn`**   – (*選用*) SageMaker AI 執行的 IAM 角色 ARN。

  *類型*：字串 *注意*：這必須列示在您的資料庫叢集參數群組中，否則會發生錯誤。
+ **`neptuneIamRoleArn`**   – (*選用*) IAM 角色的 ARN，提供對 SageMaker AI 和 Amazon S3 資源的 Neptune 存取權。

  *類型*：字串 *注意*：這必須列示在您的資料庫叢集參數群組中，否則會發生錯誤。
+ **`customModelTransformParameters `** – (*選用*) 使用自訂模型進行模型轉換的組態資訊。`customModelTransformParameters` 物件包含下列欄位，其具有的值必須與訓練工作中儲存的模型參數相容：
  + **`sourceS3DirectoryPath`** – (*必要*) 此路徑通往實作您模型之 Python 模組所在的 Amazon S3 位置。這必須指向有效的現有 Amazon S3 位置，其中至少包含訓練指令碼、轉換指令碼和 `model-hpo-configuration.json` 檔案。
  + **`transformEntryPointScript`** – (*選用*) 指令碼模組中的進入點名稱，該指令碼應在識別了超參數搜尋中的最佳模型之後執行，以計算模型部署所需的模型成品。它應該能夠在沒有命令列參數的情況下執行。

    *預設*︰`transform.py`。
+ **`baseProcessingInstanceType`** – (*選用*) 用於準備和管理 ML 模型訓練的 ML 執行個體類型。

  *類型*：字串 *注意*：這是根據記憶體需求選擇的 CPU 執行個體，用於處理轉換資料和模型。請參閱 [選取執行個體進行模型訓練和模型轉換](machine-learning-on-graphs-instance-selection.md#machine-learning-on-graphs-training-transform-instance-size)。
+ **`baseProcessingInstanceVolumeSizeInGB`** – (*選用*) 訓練執行個體的磁碟區大小。輸入資料和輸出模型都會儲存在磁碟上，因此磁碟區大小必須大到足以保留這兩個資料集。

  *類型*：整數。*預設*︰`0`。

  *備註*：如果未指定或指定 0，Neptune ML 會根據資料處理步驟中產生的建議選取磁碟區大小。請參閱 [選取執行個體進行模型訓練和模型轉換](machine-learning-on-graphs-instance-selection.md#machine-learning-on-graphs-training-transform-instance-size)。
+ **`subnets`** – (*選用*) Neptune VPC 中子網路的 ID。

  *類型*：字串清單。*預設值*：*none*。
+ **`securityGroupIds`** – (*選用*) VPC 安全群組 ID。

  *類型*：字串清單。*預設值*：*none*。
+ **`volumeEncryptionKMSKey`**   – (*選用*) SageMaker AI 用來加密連接至執行轉換任務之 ML 運算執行個體之儲存磁碟區上的資料之 AWS Key Management Service (AWS KMS) 金鑰。

  *類型*：字串 *預設值*：*none*。
+ **`enableInterContainerTrafficEncryption`** – (*選用*) 在訓練或超參數調校工作中啟用或停用容器間流量加密。

  *類型*：布林值。*預設值*：*true*。
**注意**  
`enableInterContainerTrafficEncryption` 參數僅適用於[引擎版本 1.2.0.2.R3](engine-releases-1.2.0.2.R3.md)。
+ **`s3OutputEncryptionKMSKey`**   – (*選用*) SageMaker AI 用來加密處理任務輸出的 AWS Key Management Service (AWS KMS) 金鑰。

  *類型*：字串 *預設值*：*none*。

## 使用 Neptune ML `modeltransform` 命令取得模型轉換工作的狀態
<a name="machine-learning-api-modeltransform-get-job-status"></a>

工作狀態的範例 Neptune ML `modeltransform` 命令如下所示：

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

```
aws neptunedata get-ml-model-transform-job \
  --endpoint-url https://{{your-neptune-endpoint}}:{{port}} \
  --id "{{(the job ID)}}"
```

如需詳細資訊，請參閱《 AWS CLI 命令參考》中的 [get-ml-model-transform-job](https://docs.aws.amazon.com/cli/latest/reference/neptunedata/get-ml-model-transform-job.html)。

------
#### [ SDK ]

```
import boto3
from botocore.config import Config

client = boto3.client(
    'neptunedata',
    endpoint_url='https://{{your-neptune-endpoint}}:{{port}}',
    config=Config(read_timeout=None, retries={'total_max_attempts': 1})
)

response = client.get_ml_model_transform_job(
    id='{{(the job ID)}}'
)

print(response)
```

------
#### [ awscurl ]

```
awscurl https://{{your-neptune-endpoint}}:{{port}}/ml/modeltransform/{{(the job ID)}} \
  --region {{us-east-1}} \
  --service neptune-db \
  -X GET
```

**注意**  
此範例假設您的 AWS 登入資料已在您的環境中設定。將 {{us-east-1}} 取代為 Neptune 叢集的區域。

------
#### [ curl ]

```
curl -s \
  "https://{{your-neptune-endpoint}}:{{port}}/ml/modeltransform/{{(the job ID)}}" \
  | python -m json.tool
```

------

**`modeltransform` 工作狀態的參數**
+ **`id`** – (*必要*) 模型轉換工作的唯一識別符。

  *類型*：字串
+ **`neptuneIamRoleArn`**   – (*選用*) IAM 角色的 ARN，提供對 SageMaker AI 和 Amazon S3 資源的 Neptune 存取權。

  *類型*：字串 *注意*：這必須列示在您的資料庫叢集參數群組中，否則會發生錯誤。

## 使用 Neptune ML `modeltransform` 命令停止模型轉換工作
<a name="machine-learning-api-modeltransform-stop-job"></a>

用於停止工作的範例 Neptune ML `modeltransform` 命令如下所示：

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

```
aws neptunedata cancel-ml-model-transform-job \
  --endpoint-url https://{{your-neptune-endpoint}}:{{port}} \
  --id "{{(the job ID)}}"
```

若要同時清除 Amazon S3 成品：

```
aws neptunedata cancel-ml-model-transform-job \
  --endpoint-url https://{{your-neptune-endpoint}}:{{port}} \
  --id "{{(the job ID)}}" \
  --clean
```

如需詳細資訊，請參閱《 AWS CLI 命令參考》中的 [cancel-ml-model-transform-job](https://docs.aws.amazon.com/cli/latest/reference/neptunedata/cancel-ml-model-transform-job.html)。

------
#### [ SDK ]

```
import boto3
from botocore.config import Config

client = boto3.client(
    'neptunedata',
    endpoint_url='https://{{your-neptune-endpoint}}:{{port}}',
    config=Config(read_timeout=None, retries={'total_max_attempts': 1})
)

response = client.cancel_ml_model_transform_job(
    id='{{(the job ID)}}',
    clean=True
)

print(response)
```

------
#### [ awscurl ]

```
awscurl https://{{your-neptune-endpoint}}:{{port}}/ml/modeltransform/{{(the job ID)}} \
  --region {{us-east-1}} \
  --service neptune-db \
  -X DELETE
```

若要同時清除 Amazon S3 成品：

```
awscurl "https://{{your-neptune-endpoint}}:{{port}}/ml/modeltransform/{{(the job ID)}}?clean=true" \
  --region {{us-east-1}} \
  --service neptune-db \
  -X DELETE
```

**注意**  
此範例假設您的 AWS 登入資料已在您的環境中設定。將 {{us-east-1}} 取代為 Neptune 叢集的區域。

------
#### [ curl ]

```
curl -s \
  -X DELETE "https://{{your-neptune-endpoint}}:{{port}}/ml/modeltransform/{{(the job ID)}}"
```

或如下所示：

```
curl -s \
  -X DELETE "https://{{your-neptune-endpoint}}:{{port}}/ml/modeltransform/{{(the job ID)}}?clean=true"
```

------

**`modeltransform` 停止工作的參數**
+ **`id`** – (*必要*) 模型轉換工作的唯一識別符。

  *類型*：字串
+ **`neptuneIamRoleArn`**   – (*選用*) IAM 角色的 ARN，提供對 SageMaker AI 和 Amazon S3 資源的 Neptune 存取權。

  *類型*：字串 *注意*：這必須列示在您的資料庫叢集參數群組中，否則會發生錯誤。
+ **`clean`** – (*選用*) 此旗標指定在工作停止時應刪除所有 Amazon S3 成品。

  *類型*：布林值。*預設*︰`FALSE`。

## 使用 Neptune ML `modeltransform` 命令列出作用中的模型轉換工作
<a name="machine-learning-api-modeltransform-list-jobs"></a>

用於列出作用中工作的範例 Neptune ML `modeltransform` 命令如下所示：

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

```
aws neptunedata list-ml-model-transform-jobs \
  --endpoint-url https://{{your-neptune-endpoint}}:{{port}}
```

若要限制結果數量：

```
aws neptunedata list-ml-model-transform-jobs \
  --endpoint-url https://{{your-neptune-endpoint}}:{{port}} \
  --max-items 3
```

如需詳細資訊，請參閱《 AWS CLI 命令參考》中的 [list-ml-model-transform-jobs](https://docs.aws.amazon.com/cli/latest/reference/neptunedata/list-ml-model-transform-jobs.html)。

------
#### [ SDK ]

```
import boto3
from botocore.config import Config

client = boto3.client(
    'neptunedata',
    endpoint_url='https://{{your-neptune-endpoint}}:{{port}}',
    config=Config(read_timeout=None, retries={'total_max_attempts': 1})
)

response = client.list_ml_model_transform_jobs(
    maxItems=3
)

print(response)
```

------
#### [ awscurl ]

```
awscurl https://{{your-neptune-endpoint}}:{{port}}/ml/modeltransform \
  --region {{us-east-1}} \
  --service neptune-db \
  -X GET
```

若要限制結果數量：

```
awscurl "https://{{your-neptune-endpoint}}:{{port}}/ml/modeltransform?maxItems=3" \
  --region {{us-east-1}} \
  --service neptune-db \
  -X GET
```

**注意**  
此範例假設您的 AWS 登入資料已在您的環境中設定。將 {{us-east-1}} 取代為 Neptune 叢集的區域。

------
#### [ curl ]

```
curl -s "https://{{your-neptune-endpoint}}:{{port}}/ml/modeltransform" | python -m json.tool
```

或如下所示：

```
curl -s "https://{{your-neptune-endpoint}}:{{port}}/ml/modeltransform?maxItems=3" | python -m json.tool
```

------

**`modeltransform` 列出工作的參數**
+ **`maxItems`** – (*選用*) 要傳回的項目數上限。

  *類型*：整數。*預設*︰`10`。*允許的最大值*：`1024`。
+ **`neptuneIamRoleArn`**   – (*選用*) IAM 角色的 ARN，提供對 SageMaker AI 和 Amazon S3 資源的 Neptune 存取權。

  *類型*：字串 *注意*：這必須列示在您的資料庫叢集參數群組中，否則會發生錯誤。