적합 맞춤

적합 맞춤 기능은 Apache Beam 리소스 힌트를 사용하여 파이프라인의 작업자 리소스를 맞춤설정합니다. 리소스를 특정 파이프라인 단계로 타겟팅하는 기능은 추가적인 파이프라인 유연성과 기능 및 잠재적인 비용 절감 효과를 제공합니다. 더 비싼 리소스가 필요한 파이프라인 단계에 이러한 리소스를 적용하고 다른 파이프라인 단계에는 보다 저렴한 리소스를 적용할 수 있습니다. 적합 맞춤을 사용하여 전체 파이프라인이나 특정 파이프라인 단계에 리소스 요구사항을 지정합니다.

지원 및 제한 사항

  • 리소스 힌트는 Apache Beam Java 및 Python SDK 버전 2.31.0 이상에서 지원됩니다.
  • 배치 파이프라인에서는 적합 맞춤이 지원됩니다. 스트리밍 파이프라인은 지원되지 않습니다.
  • 적합 맞춤은 Dataflow Prime을 지원합니다.
  • 적합 맞춤은 FlexRS를 지원하지 않습니다.
  • 적합 맞춤을 사용할 때는 worker_accelerator 서비스 옵션을 사용하지 마세요.

적합 맞춤 사용 설정

적합 맞춤을 사용 설정하려면 파이프라인에서 사용 가능한 리소스 힌트를 하나 이상 사용합니다. 파이프라인에 리소스 힌트를 사용하면 적합 맞춤이 자동으로 사용 설정됩니다. 자세한 내용은 이 문서의 리소스 힌트 사용 섹션을 참조하세요.

사용 가능한 리소스 힌트

다음과 같은 리소스 힌트를 사용할 수 있습니다.

리소스 힌트 설명
min_ram

작업자에 할당할 최소 RAM 양(GB)입니다. Dataflow Prime은 메모리를 새 작업자(수평 확장)나 기존 작업자(수직 확장)에 할당할 때 이 값을 하한값으로 사용합니다.

예를 들면 다음과 같습니다.

min_ram=NUMBERGB
  • NUMBER를 파이프라인 또는 파이프라인 단계에 필요한 최소 작업자 메모리 값으로 바꿉니다.
  • min_ram은 작업자별 집계 사양입니다. 이 사양은 vCPU별 사양이 아닙니다. 예를 들어 min_ram=15GB를 설정하면 Dataflow는 작업자에 있는 모든 vCPU에서 사용할 수 있는 집계 메모리를 최소 15GB 이상으로 설정합니다.
accelerator

사용자가 제공하는 GPU 할당으로, 이를 사용하면 파이프라인과 해당 단계에서 GPU 사용 및 비용을 제어할 수 있습니다. 플래그에 대한 매개변수로 Dataflow 작업자에 연결할 GPU 유형과 수를 지정합니다.

예를 들면 다음과 같습니다.

accelerator="type:GPU_TYPE;count:GPU_COUNT;machine_type:MACHINE_TYPE;CONFIGURATION_OPTIONS"
  • GPU_TYPE를 사용할 GPU 유형으로 바꿉니다. Dataflow에서 지원되는 GPU 유형 목록은 GPU에 대한 Dataflow 지원을 참조하세요.
  • GPU_COUNT를 사용할 GPU 수로 바꿉니다.
  • 선택사항: MACHINE_TYPE을 GPU에서 사용할 머신 유형으로 바꿉니다.
    • 머신 유형이 선택한 GPU 유형과 호환되어야 합니다. GPU 유형과 호환되는 머신 유형에 대한 자세한 내용은 GPU 플랫폼을 참조하세요.
    • 머신 유형을 accelerator 리소스 힌트와 작업자 머신 유형 파이프라인 옵션 모두에서 지정하면 파이프라인 옵션이 적합 맞춤 중에 무시됩니다.
  • Dataflow에서 NVIDIA GPU를 사용하려면 install-nvidia-driver 구성 옵션을 설정합니다.

GPU 사용에 대한 자세한 내용은 Dataflow에서 GPU를 참조하세요.

리소스 힌트 중첩

리소스 힌트는 다음과 같이 파이프라인 변환 계층 구조에 적용됩니다.

  • min_ram: 변환의 값은 변환 자체 및 변환의 계층 구조에 있는 모든 상위 항목에 설정된 값 사이의 가장 큰 min_ram 힌트 값으로 평가됩니다.
    • 예시: 내부 변환 힌트가 min_ram을 16GB로 설정하고, 계층 구조에서 외부 변환 힌트가 min_ram을 32GB로 설정하는 경우, 전체 변환의 모든 단계에 32GB 힌트가 사용됩니다.
    • 예시: 내부 변환 힌트가 min_ram을 16GB로 설정하고 계층 구조의 외부 변환 힌트가 min_ram을 8GB로 설정하는 경우 내부 변환에 없는 외부 변환의 모든 단계에 대해 8GB 힌트가 사용되고, 내부 변환의 모든 단계에 대해 16GB 힌트가 사용됩니다.
  • accelerator: 변환 계층 구조의 가장 안쪽 값이 우선 적용됩니다.
    • 예시: 내부 변환 accelerator 힌트가 계층 구조의 외부 변환 accelerator 힌트와 다르면 내부 변환에 대해 내부 accelerator 힌트가 사용됩니다.

전체 파이프라인에 설정된 힌트는 개별적으로 가장 바깥쪽 변환에 설정된 것처럼 취급됩니다.

리소스 힌트 사용

전체 파이프라인 또는 파이프라인 단계에 리소스 힌트를 설정할 수 있습니다.

파이프라인 리소스 힌트

명령줄에서 파이프라인을 실행할 때 전체 파이프라인에 리소스 힌트를 설정할 수 있습니다.

Python 환경을 설정하려면 Python 빠른 시작을 참조하세요.

예:

    python my_pipeline.py \
        --runner=DataflowRunner \
        --resource_hints=min_ram=numberGB \
        --resource_hints=accelerator="type:type;count:number;install-nvidia-driver" \
        ...

파이프라인 단계 리소스 힌트

파이프라인 단계(변환)의 리소스 힌트를 프로그래매틱 방식으로 설정할 수 있습니다.

Java

Java용 Apache Beam SDK를 설치하려면 Apache Beam SDK 설치를 참조하세요.

ResourceHints 클래스를 사용하여 파이프라인 변환에서 리소스 힌트를 프로그래매틱 방식으로 설정할 수 있습니다.

다음 예시에서는 파이프라인 변환에서 리소스 힌트를 프로그래매틱 방식으로 설정하는 방법을 보여줍니다.

pcoll.apply(MyCompositeTransform.of(...)
    .setResourceHints(
        ResourceHints.create()
            .withMinRam("15GB")
            .withAccelerator(
    "type:nvidia-tesla-k80;count:1;install-nvidia-driver")))

pcoll.apply(ParDo.of(new BigMemFn())
    .setResourceHints(
        ResourceHints.create().withMinRam("30GB")))

전체 파이프라인에서 리소스 힌트를 프로그래매틱 방식으로 설정하려면 ResourceHintsOptions 인터페이스를 사용합니다.

Python

Python용 Apache Beam SDK를 설치하려면 Apache Beam SDK 설치를 참조하세요.

PTransforms.with_resource_hints 클래스를 사용하여 파이프라인 변환에서 리소스 힌트를 프로그래매틱 방식으로 설정할 수 있습니다. 자세한 내용은 ResourceHint 클래스를 참조하세요.

다음 예시에서는 파이프라인 변환에서 리소스 힌트를 프로그래매틱 방식으로 설정하는 방법을 보여줍니다.

pcoll | MyPTransform().with_resource_hints(
    min_ram="4GB",
    accelerator="type:nvidia-tesla-k80;count:1;install-nvidia-driver")

pcoll | beam.ParDo(BigMemFn()).with_resource_hints(
    min_ram="30GB")

전체 파이프라인에 리소스 힌트를 설정하려면 파이프라인을 실행할 때 --resource_hints 파이프라인 옵션을 사용합니다. 예시는 파이프라인 리소스 힌트를 참조하세요.

Go

Go에서는 리소스 힌트가 지원되지 않습니다.

적합 맞춤 및 융합

경우에 따라 여러 리소스 힌트로 설정된 변환은 융합 최적화 프로세스의 일부로 동일한 작업자 풀의 작업자에서 실행될 수 있습니다. 변환이 융합되면 Dataflow는 변환에 설정된 리소스 힌트의 통합을 충족하는 환경에서 변환을 실행합니다.

리소스 힌트를 병합할 수 없는 경우 융합이 수행되지 않습니다. 예를 들어 여러 GPU의 리소스 힌트는 병합될 수 없으므로 이러한 변환은 융합되지 않습니다.

Dataflow가 중간 PCollection을 강제로 구체화하도록 파이프라인에 작업을 추가하여 융합을 방지할 수도 있습니다. 자세한 내용은 융합 방지를 참조하세요.

적합 맞춤 문제 해결

이 섹션에서는 적합 맞춤과 관련된 일반적인 문제를 해결하기 위한 지침을 제공합니다.

잘못된 구성

적합 맞춤을 사용하려고 하면 다음 오류가 발생합니다.

Workflow failed. Causes: One or more operations had an error: 'operation-OPERATION_ID':
[UNSUPPORTED_OPERATION] 'NUMBER vCpus with NUMBER MiB memory is
an invalid configuration for NUMBER count of 'GPU_TYPE' in family 'MACHINE_TYPE'.'.

이 오류는 선택한 GPU 유형이 선택한 머신 유형과 호환되지 않을 때 발생합니다. 이 오류를 해결하려면 호환되는 GPU 유형과 머신 유형을 선택합니다. 호환성에 대한 자세한 내용은 GPU 플랫폼을 참조하세요.