CLI(v2) 자동화된 ML 텍스트 분류 다중 레이블 작업 YAML 스키마

적용 대상:Azure CLI ml 확장 v2(현재)

참고

이 문서에 자세히 설명된 YAML 구문은 최신 버전의 ML CLI v2 확장에 대한 JSON 스키마를 기반으로 합니다. 이 구문은 최신 버전의 ML CLI v2 확장에서만 작동하도록 보장됩니다. https://azuremlschemasprod.azureedge.net/에서 이전 확장 버전에 대한 스키마를 찾을 수 있습니다.

모든 Azure Machine Learning 엔터티에는 스키마화된 YAML 표현이 있습니다. .yml 또는 .yaml 확장을 사용하여 YAML 구성 파일에서 새 엔터티를 만들 수 있습니다.

이 문서에서는 NLP 텍스트 분류 다중 레이블 작업을 위해 이러한 YAML 파일을 구성하는 동안 발생할 수 있는 몇 가지 구문 개념에 대한 참조를 제공합니다.

원본 JSON 스키마는 https://azuremlsdk2.blob.core.windows.net/preview/0.0.1/autoMLNLPTextClassificationMultilabelJob.schema.json에서 찾을 수 있습니다.

YAML 구문

형식 Description 허용되는 값 기본값
$schema 문자열 YAML 스키마를 로드할 위치/URL을 나타냅니다. 사용자가 Azure Machine Learning VS Code 확장을 사용하여 YAML 파일을 작성하는 경우 파일 맨 위에 $schema를 포함하면 사용자가 스키마 및 리소스 완성을 호출할 수 있습니다.
type const 필수 요소. 작업의 유형입니다. automl automl
task const 필수 요소. AutoML 작업의 유형입니다.
다중 레이블 분류에 대한 작업 설명:
가능한 클래스가 여러 개 있으며 각 샘플에 여러 클래스를 할당할 수 있습니다. 이 작업은 각 샘플에 대한 모든 클래스를 예측하는 것입니다. 예를 들어 영화 스크립트를 "코미디" 또는 "로맨틱" 또는 "로맨틱 코미디"로 분류합니다.
text_classification_multilabel
name 문자열 작업의 이름입니다. 작업 영역의 모든 작업에서 고유해야 합니다. 생략하면 Azure Machine Learning이 이름의 GUID를 자동으로 생성합니다.
display_name 문자열 스튜디오 UI에서 작업의 표시 이름입니다. 작업 영역 내에서 고유하지 않을 수 있습니다. 생략하면 Azure Machine Learning이 표시 이름에 대한 사람이 읽을 수 있는 형용사-명사 식별자를 자동으로 생성합니다.
experiment_name 문자열 작업을 구성할 실험 이름입니다. 각 작업의 실행 기록은 스튜디오의 “실험” 탭에서 해당하는 실험 아래에 정리됩니다. 생략하면 Azure Machine Learning에서 작업(job)이 만들어진 작업(work) 디렉터리의 이름으로 기본 설정합니다.
description 문자열 작업에 대한 설명입니다.
tags object 작업에 대한 태그 사전입니다.
compute 문자열 작업을 실행할 컴퓨팅 대상의 이름입니다. 작업 영역에서 기존 컴퓨팅을 참조하기 위해 azureml:<compute_name> 구문을 사용합니다.
log_verbosity number 다양한 수준의 로그 세부 정보 표시입니다. not_set, debug, info, warning, error, critical info
primary_metric 문자열 AutoML이 모델 선택에 최적화되는 메트릭입니다. accuracy accuracy
target_column_name 문자열 필수 요소. 예측을 대상으로 할 열의 이름입니다. 이 이름은 항상 지정해야 합니다. 이 매개 변수는 training_datavalidation_data에 적용할 수 있습니다.
training_data object 필수 사항입니다. 작업 내에서 사용할 데이터입니다. 자세한 내용은 다중 레이블 섹션을 참조하세요.
validation_data object 필수 사항입니다. 작업 내에서 사용할 유효성 검사 데이터입니다. 열 집합, 각 열의 데이터 형식, 왼쪽에서 오른쪽으로의 열 순서, 두 개 이상의 고유한 레이블을 기준으로 학습 데이터와 일치해야 합니다.
참고: 각 데이터 세트 내의 열 이름은 고유해야 합니다. 자세한 내용은 데이터 유효성 검사 섹션을 참조하세요.
limits object 작업의 제한 구성 사전입니다. 이 섹션의 매개 변수: max_concurrent_trials, max_nodes, max_trials, timeout_minutes, trial_timeout_minutes 자세한 내용은 한도를 참조하세요.
training_parameters object 작업에 대한 학습 매개 변수를 포함하는 사전입니다.
자세한 내용은 지원되는 하이퍼 매개 변수를 참조하세요.
참고: training_parameters에 설정된 하이퍼 매개 변수는 모든 스위핑 실행에서 수정되므로 검색 공간에 포함할 필요가 없습니다.
sweep object 작업의 스윕 매개 변수를 포함하는 사전입니다. sampling_algorithm(필수) 및 early_termination라는 2개의 키가 있습니다. 자세한 내용은 모델 스윕 및 하이퍼 매개 변수 튜닝 섹션을 참조하세요.
search_space object 하이퍼 매개 변수 검색 공간의 사전입니다. 키는 하이퍼 매개 변수의 이름이고 값은 매개 변수 식입니다. training_parameters를 통해 수정할 수 있는 모든 매개 변수는 여기에서 지원됩니다(대신 스윕됨). 자세한 내용은 지원되는 하이퍼 매개 변수를 참조하세요.
하이퍼 매개 변수에는 두 가지 유형이 있습니다.
- 개별 하이퍼 매개 변수: 개별 하이퍼 매개 변수는 불연속 값 중 choice로 지정됩니다. choice는 하나 이상의 쉼표로 구분된 값, range 개체 또는 임의의 list 개체일 수 있습니다. 고급 불연속 하이퍼 매개 변수는 배포를 사용하여 지정될 수도 있습니다(randint, qlognormal, qnormal, qloguniform, quniform). 자세한 내용은 이 섹션을 참조하세요.
- 연속 하이퍼 매개 변수: 연속 하이퍼 매개 변수는 연속 값의 범위에 대한 배포로 지정됩니다. 현재 지원되는 배포는 lognormal, normal, loguniform, uniform입니다. 자세한 내용은 이 섹션을 참조하세요.

사용할 수 있는 식 집합은 매개 변수 식 섹션을 참조하세요.
outputs object 작업의 출력 구성 사전입니다. 키는 작업의 컨텍스트 내에서 출력에 대한 이름이고 값은 출력 구성입니다.
outputs.best_model object 최상의 모델을 위한 출력 구성 사전입니다. 자세한 내용은 최상의 모델 출력 구성을 참조하세요.

구성에 사용되는 기타 구문:

제한

형식 Description 허용되는 값 기본값
max_concurrent_trials 정수 병렬로 실행될 최대 시도(자식 작업) 수를 나타냅니다. 1
max_trials 정수 AutoML nlp 작업이 다양한 하이퍼 매개 변수 조합을 사용하여 학습 알고리즘을 실행하려고 시도할 수 있는 최대 실행 횟수를 나타냅니다. 1
timeout_minutes 정수 제출된 AutoML 작업을 실행하는 데 걸리는 최대 시간(분)을 나타냅니다. 이제 작업이 종료됩니다. AutoML NLP 작업의 기본 시간 제한은 7일입니다. 10080
trial_timeout_minutes 정수 제출된 AutoML 작업의 각 평가판(자식 작업)을 실행할 수 있는 최대 시간(분)을 나타냅니다. 이후에는 자식 작업이 종료됩니다.
max_nodes 정수 작업에 활용할 백업 컴퓨팅 클러스터의 최대 노드 수입니다. 1

지원되는 하이퍼 매개 변수

다음 표에서는 AutoML NLP가 지원하는 하이퍼 매개 변수에 대해 설명합니다.

매개 변수 이름 설명 Syntax
gradient_accumulation_steps 최적화 프로그램의 단계 함수를 호출하여 그라데이션 하강의 한 단계를 수행하기 전에 그라데이션을 합산해야 하는 역방향 작업 수입니다.

이는 GPU에 맞는 최대 크기보다 gradient_accumulation_steps 배 더 큰 효과적인 일괄 처리 크기를 사용하는 데 활용됩니다.
양의 정수여야 합니다.
learning_rate 초기 학습률입니다. (0, 1) 범위의 부동 소수점이어야 합니다.
learning_rate_scheduler 학습률 스케줄러의 유형입니다. linear, cosine, cosine_with_restarts, polynomial, constant, constant_with_warmup 중에서 선택해야 합니다.
model_name 지원되는 모델 중 하나의 이름입니다. bert_base_cased, bert_base_uncased, bert_base_multilingual_cased, bert_base_german_cased, bert_large_cased, bert_large_uncased, distilbert_base_cased, distilbert_base_uncased, roberta_base, roberta_large, distilroberta_base, xlm_roberta_base, xlm_roberta_large, xlnet_base_cased, xlnet_large_cased 중에서 선택해야 합니다.
number_of_epochs 학습 Epoch의 수입니다. 양의 정수여야 합니다.
training_batch_size 학습 일괄 처리 크기입니다. 양의 정수여야 합니다.
validation_batch_size 유효성 검사 일괄 처리 크기입니다. 양의 정수여야 합니다.
warmup_ratio 선형 준비에 사용되는 총 학습 단계의 비율은 0에서 learning_rate까지입니다. [0, 1] 범위의 부동 소수점이어야 합니다.
weight_decay 최적화 프로그램이 sgd, adam 또는 adamw일 때 가중치 감소 값입니다. [0, 1] 범위의 부동 소수점이어야 합니다.

학습 또는 유효성 검사 데이터

형식 Description 허용되는 값 기본값
description 문자열 이 입력 데이터를 설명하는 자세한 정보입니다.
path 문자열 데이터를 로드해야 하는 경로입니다. 경로는 file 경로, folder 경로 또는 경로의 pattern일 수 있습니다. pattern은 데이터가 포함된 파일 및 폴더의 글로빙(***)을 허용하는 검색 패턴을 지정합니다. 지원되는 URI 형식은 azureml, https, wasbs, abfss, adl입니다. azureml:// URI 형식을 사용하는 방법에 대한 자세한 내용은 핵심 yaml 구문을 참조하세요. 아티팩트 파일 위치의 URI입니다. 이 URI에 스키마(예: http:, azureml: 등)가 없는 경우 로컬 참조로 간주되며 이 URI가 가리키는 파일은 엔터티를 만들 때 기본 작업 영역 blob-storage에 업로드됩니다.
mode 문자열 데이터 세트 제공 메커니즘입니다. direct direct
type const nlp 모델을 생성하려면 사용자가 학습 데이터를 MLTable 형식으로 가져와야 합니다. 자세한 내용은 데이터 준비를 참조하세요. mltable mltable

최상의 모델 출력 구성

형식 Description 허용되는 값 기본값
type 문자열 필수 요소. 최상의 모델 유형입니다. AutoML은 mlflow 모델만 허용합니다. mlflow_model mlflow_model
path 문자열 필수 요소. model-artifact 파일이 저장되는 위치의 URI입니다. 이 URI에 스키마(예: http:, azureml: 등)가 없는 경우 로컬 참조로 간주되며 이 URI가 가리키는 파일은 엔터티를 만들 때 기본 작업 영역 blob-storage에 업로드됩니다.
storage_uri 문자열 모델의 HTTP URL입니다. 이 URL을 az storage copy -s THIS_URL -d DESTINATION_PATH --recursive와 함께 사용하여 데이터를 다운로드하세요.

설명

az ml job 명령은 Azure Machine Learning 작업을 관리하는 데 사용할 수 있습니다.

예제는 GitHub 리포지토리 예제에서 사용할 수 있습니다. NLP 텍스트 분류 다중 레이블 작업과 관련된 예는 아래에 링크되어 있습니다.

YAML: AutoML 텍스트 분류 다중 레이블 작업

$schema: https://azuremlsdk2.blob.core.windows.net/preview/0.0.1/autoMLJob.schema.json

type: automl
experiment_name: dpv2-cli-text-classification-multilabel-paper-cat
description: A text classification multilabel job using paper categorization data

compute: azureml:gpu-cluster

task: text_classification_multilabel
primary_metric: accuracy
log_verbosity: debug

limits:
  timeout_minutes: 60

target_column_name: "terms"
training_data:
  path: "./training-mltable-folder"
  type: mltable
validation_data:
  type: mltable
  path: "./validation-mltable-folder"
# featurization:
#   dataset_language: "eng"

YAML: AutoML 텍스트 분류 다중 레이블 파이프라인 작업

$schema: https://azuremlschemas.azureedge.net/latest/pipelineJob.schema.json
type: pipeline

description: Pipeline using AutoML Text Classification Multilabel task

display_name: pipeline-with-text-classification-multilabel
experiment_name: pipeline-with-automl

settings:
  default_compute: azureml:gpu-cluster

inputs:
  text_classification_multilabel_training_data:
    type: mltable
    path: ./training-mltable-folder
  text_classification_multilabel_validation_data:
    type: mltable
    path: ./validation-mltable-folder

jobs:
  preprocessing_node:
    type: command
    component: file:./components/component_preprocessing.yaml
    inputs:
      train_data: ${{parent.inputs.text_classification_multilabel_training_data}}
      validation_data: ${{parent.inputs.text_classification_multilabel_validation_data}}
    outputs:
      preprocessed_train_data:
        type: mltable
      preprocessed_validation_data:
        type: mltable
  text_classification_multilabel_node:
    type: automl
    task: text_classification_multilabel
    log_verbosity: info
    primary_metric: accuracy
    limits:
      max_trials: 1
      timeout_minutes: 60
    target_column_name: terms
    training_data: ${{parent.jobs.preprocessing_node.outputs.preprocessed_train_data}}
    validation_data: ${{parent.jobs.preprocessing_node.outputs.preprocessed_validation_data}}
    # currently need to specify outputs "mlflow_model" explicitly to reference it in following nodes
    outputs:
      best_model:
        type: mlflow_model
  register_model_node:
    type: command
    component: file:./components/component_register_model.yaml
    inputs:
      model_input_path: ${{parent.jobs.text_classification_multilabel_node.outputs.best_model}}
      model_base_name: paper_categorization_model

다음 단계