수직 자동 확장

수직 자동 확장은 Dataflow Prime이 작업 요구사항에 맞게 작업자에게 제공되는 메모리를 동적으로 수직 확장 또는 축소할 수 있게 해 주는 기능입니다. 이 기능은 메모리 부족(OOM) 오류에 대해 작업 복원력을 높이고 파이프라인 효율성을 극대화하도록 디자인되었습니다. Dataflow Prime은 파이프라인을 모니터링하고, 작업자에 사용 가능한 메모리가 부족하거나 초과되는 상황을 감지한 후 이러한 작업자를 메모리가 많거나 적은 새 작업자로 대체합니다.

중요: 수직 자동 확장은 기존 작업자를 새 작업자로 대체하기 때문에 작업자 크기 조정 시 발생 가능한 지연 시간을 개선하기 위해 커스텀 컨테이너를 사용하는 것이 좋습니다.

스트리밍

Dataflow Prime을 사용하는 모든 새 스트리밍 작업에 기본적으로 수직 자동 확장이 사용 설정됩니다.

명령줄 인터페이스를 통해 템플릿에서 작업을 실행하는 경우, --additional_experiments=disable_vertical_memory_autoscaling 플래그를 전달하여 수직 자동 확장을 사용 중지할 수 있습니다.

모든 Dataflow Prime 스트리밍 자바 및 Python 파이프라인은 수직 자동 확장을 지원합니다. Streaming Engine 없이 Dataflow Prime 스트리밍 자바 파이프라인을 사용할 수 있습니다. 하지만 수직 자동 확장을 최대한 활용하려면 Streaming Engine을 사용 설정하는 것이 좋습니다.

Batch

Dataflow Prime 일괄 작업의 경우 수직 자동 확장은 4번의 메모리 부족 오류가 발생한 후에만 확장됩니다.

  • 수직 자동 확장은 작업 실패를 방지하기 위해 확장되며 축소되지 않습니다.
  • 전체 풀은 나머지 작업을 위해 확장됩니다.
  • 리소스 힌트가 사용되고 여러 풀이 만들어지면 각 풀이 개별적으로 확장됩니다.

일괄 작업의 경우 수직 자동 확장은 기본적으로 사용 설정되지 않습니다. 일괄 작업에 수직 자동 확장을 사용 설정하려면 다음 파이프라인 옵션을 설정합니다.

  • --experiments=enable_batch_vmr
  • --experiments=enable_vertical_memory_autoscaling
  • --experiments=auto_use_sibling_sdk_workers=false

일괄 작업에 수직 자동 확장을 사용 중지하려면 다음 중 하나를 수행하세요.

  • --experiments=enable_batch_vmr 파이프라인 옵션을 설정하지 않습니다.
  • --experiments=disable_vertical_memory_autoscaling 파이프라인 옵션을 설정합니다.

제한사항

  • 작업자의 메모리만 수직으로 확장됩니다.
  • 기본적으로 메모리 확장은 상한 값이 16GiB(GPU 사용 시 26GiB)이고 하한 값이 6GiB(GPU 사용 시 12GiB)입니다. 리소스 힌트를 제공하면 상한 값과 하한 값이 모두 변경될 수 있습니다.
  • A100 GPU를 사용하는 풀에는 수직 자동 확장이 지원되지 않습니다.
  • 일괄 작업의 경우 실패한 항목이 포함된 번들이 파이프라인이 완전히 실패하기 전에 4회 넘게 재시도될 수 있습니다.

수직 자동 확장 모니터링

수직 자동 확장 작업은 작업 및 작업자 로그에 게시됩니다. 이러한 로그를 보려면 Dataflow 작업 측정항목을 참조하세요.

수평 자동 확장에 대한 영향

Dataflow Prime에서 수직 자동 확장은 수평 자동 확장과 함께 작동합니다. 이 조합에서는 Dataflow Prime이 파이프라인 요구에 맞게 작업자를 확장 또는 축소하고 컴퓨팅 용량의 활용을 극대화할 수 있습니다.

기본적으로 수직 자동 확장(작업자 메모리 조정)은 수평 자동 확장(작업자 수 조정)보다 낮은 빈도로 수행됩니다. 수평 자동 확장은 수직 자동 확장으로 업데이트가 트리거되는 동안 그리고 이후 최대 10분까지 비활성화됩니다. 이러한 10분 동안 입력 데이터 백로그가 상당량 누적되면 해당 백로그를 지우기 위해 수평 자동 확장이 수행될 가능성이 있습니다. 스트리밍 파이프라인을 위한 수평 자동 확장에 대해 자세히 알아보려면 스트리밍 자동 확장을 참조하세요.

문제 해결

이 섹션에서는 수직 자동 확장과 관련된 일반적인 문제의 문제 해결을 위한 지침을 제공합니다.

수직 자동 확장이 작동하지 않는 것 같습니다.

수직 자동 확장이 작동하지 않으면 다음 작업 세부정보를 확인하세요.

  • 다음 작업 메시지를 확인하여 수직 자동 확장이 활성 상태인지 확인합니다.Vertical Autoscaling is enabled. This pipeline is receiving recommendations for resources allocated per worker.

    이 메시지가 없으면 수직 자동 확장이 실행 중이 아닙니다.

  • 스트리밍 파이프라인의 경우 enable_vertical_memory_autoscaling 플래그가 설정되었는지 확인합니다. 일괄 파이프라인의 경우 enable_vertical_memory_autoscalingenable_batch_vmr 플래그가 설정되어 있고 auto_use_sibling_sdk_workersfalse로 설정되어 있는지 확인합니다.

  • Google Cloud 프로젝트에 대해 Cloud Autoscaling API를 사용 설정했는지 확인합니다. API 사용 설정하기

  • 작업이 Dataflow Prime을 실행하는지 확인합니다. 자세한 내용은 Dataflow Prime 사용 설정을 참조하세요.

작업에서 백로그 및 워터마크가 높게 관찰됩니다.

이 안내는 스트리밍 작업에만 적용됩니다. 작업자의 수직 재형성이 몇 분 이상 걸리면 해당 작업에서 입력 데이터의 백로그 및 워터마크가 높은 것으로 확인될 수 있습니다. Python 파이프라인에서 이 문제를 해결하려면 작업자를 재구성하면서 발생할 수 있는 지연 시간을 개선할 수 있는 커스텀 컨테이너를 사용하는 것이 좋습니다. 자바 파이프라인에서 이 문제를 해결하려면 Streaming EngineRunner v2를 사용 설정하는 것이 좋습니다. 이 기능을 사용 설정한 후에도 문제가 지속되면 고객 지원에 문의하세요.

수직 자동 확장이 메모리 용량에 도달했습니다.

기본적으로 리소스 힌트가 제공되지 않았으면 수직 자동 확장이 작업자당 16GiB 초과(GPU 사용 시 26GiB) 또는 작업자당 6GiB 미만(GPU 사용 시 12GiB)으로 메모리를 확장하지 않습니다. 이러한 한도에 도달하면 다음 로그 메시지 중 하나가 Cloud Logging에 생성됩니다.

스트리밍 작업:

Vertical Autoscaling has a desire to upscale memory, but we have hit the memory scaling limit of X GiB. This is only a problem if the pipeline continues to see memory throttling and/or OOMs.

일괄 작업:

Vertical Autoscaling has a desire to upscale memory, but we have hit the memory scaling limit of 16.0 GiB. Job will fail because we have upsized to maximum size, and the pipeline is still OOMing.

파이프라인에서 메모리 부족 오류가 계속되는 경우 min_ram="numberXB"를 지정하여 변환에 대한 메모리 요구사항을 정의하는 데 리소스 힌트를 사용할 수 있습니다. 이렇게 설정하면 Dataflow가 더 높은 메모리 용량을 지원할 수 있는 작업자의 초기 구성을 선택할 수 있습니다. 하지만 이러한 초기 구성을 변경하면 파이프라인에서 사용할 수 있는 잠재적인 동시 로드가 늘어날 수 있습니다. 메모리 소모량이 높은 변환의 경우 사용 가능한 동시 로드 증가로 인해 파이프라인에 사용되는 메모리가 이전보다 늘어날 수 있습니다. 이러한 경우 메모리 소비를 줄이기 위해 변환을 최적화해야 할 수 있습니다.

참고: 수직 자동 확장을 수행해도 작업자 로그에 OOM 오류가 표시될 수 있습니다. OOM 오류가 발생하면 수직 자동 확장으로 OOM 이벤트가 발견되고 추적될 때 작업자 로그에 표시됩니다.

작업자 메모리 한도는 안정화되지 않으며 시간이 지남에 따라 지속적인 메모리 사용에도 불구하고 증가 및 감소합니다.

이 안내는 스트리밍 작업에만 적용됩니다. 자바 파이프라인의 경우 Streaming EngineRunner v2를 사용 설정합니다. 문제가 지속되거나 Python 파이프라인에서 이 동작이 발견되면 고객 지원에 문의하세요.

일반 로그 메시지

이 섹션에서는 수직 자동 확장을 사용 설정할 때 생성된 일반 로그 메시지에 대해 설명합니다.

수직 자동 확장이 사용 설정되었습니다. 이 파이프라인이 작업자별로 할당된 리소스에 대해 권장사항을 수신하고 있습니다.

이 메시지는 수직 자동 확장이 활성 상태임을 나타냅니다. 이 메시지가 없으면 수직 자동 확장이 작업자 풀에서 작동 중이 아님을 나타냅니다.

수직 자동 확장이 활성 상태가 아니면 수직 자동 확장이 작동 중이 아닙니다. 무엇을 확인해야 하나요?에서 문제 해결 안내를 참조하세요.

수직 자동 확장 업데이트로 XGiB에서 YGiB로 풀의 작업자별 메모리 한도가 변경되었습니다.

이 메시지는 수직 자동 확장으로 인해 작업자 풀 메모리 크기 조정이 시작되었음을 나타냅니다.