적합 맞춤 기능은 Apache Beam 리소스 힌트를 사용하여 파이프라인의 작업자 리소스를 맞춤설정합니다. 리소스를 특정 파이프라인 단계로 타겟팅하는 기능은 추가적인 파이프라인 유연성과 기능 및 잠재적인 비용 절감 효과를 제공합니다. 더 비싼 리소스가 필요한 파이프라인 단계에 이러한 리소스를 적용하고 다른 파이프라인 단계에는 보다 저렴한 리소스를 적용할 수 있습니다. 적합 맞춤을 사용하여 전체 파이프라인이나 특정 파이프라인 단계에 리소스 요구사항을 지정합니다.
지원 및 제한 사항
- 리소스 힌트는 Apache Beam Java 및 Python SDK 버전 2.31.0 이상에서 지원됩니다.
- 배치 파이프라인에서는 적합 맞춤이 지원됩니다. 스트리밍 파이프라인은 지원되지 않습니다.
- 적합 맞춤은 Dataflow Prime을 지원합니다.
- 적합 맞춤은 FlexRS를 지원하지 않습니다.
- 적합 맞춤을 사용할 때는
worker_accelerator
서비스 옵션을 사용하지 마세요.
적합 맞춤 사용 설정
적합 맞춤을 사용 설정하려면 파이프라인에서 사용 가능한 리소스 힌트를 하나 이상 사용합니다. 파이프라인에 리소스 힌트를 사용하면 적합 맞춤이 자동으로 사용 설정됩니다. 자세한 내용은 이 문서의 리소스 힌트 사용 섹션을 참조하세요.
사용 가능한 리소스 힌트
다음과 같은 리소스 힌트를 사용할 수 있습니다.
리소스 힌트 | 설명 |
---|---|
min_ram |
작업자에 할당할 최소 RAM 양(GB)입니다. Dataflow Prime은 메모리를 새 작업자(수평 확장)나 기존 작업자(수직 확장)에 할당할 때 이 값을 하한값으로 사용합니다. 예를 들면 다음과 같습니다. min_ram=NUMBERGB
|
accelerator |
사용자가 제공하는 GPU 할당으로, 이를 사용하면 파이프라인과 해당 단계에서 GPU 사용 및 비용을 제어할 수 있습니다. 플래그에 대한 매개변수로 Dataflow 작업자에 연결할 GPU 유형과 수를 지정합니다. 예를 들면 다음과 같습니다. accelerator="type:GPU_TYPE;count:GPU_COUNT;machine_type:MACHINE_TYPE;CONFIGURATION_OPTIONS"
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용 Apache Beam SDK를 설치하려면 Apache Beam SDK 설치를 참조하세요.
ResourceHints
클래스를 사용하여 파이프라인 변환에서 리소스 힌트를 프로그래매틱 방식으로 설정할 수 있습니다.
다음 예시에서는 파이프라인 변환에서 리소스 힌트를 프로그래매틱 방식으로 설정하는 방법을 보여줍니다.
pcoll.apply(MyCompositeTransform.of(...)
.setResourceHints(
ResourceHints.create()
.withMinRam("15GB")
.withAccelerator(
"type:nvidia-tesla-l4;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-l4;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 플랫폼을 참조하세요.