수직 자동 확장

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

중요: 수직 자동 확장은 기존 작업자를 새 작업자로 대체하므로 작업자 크기를 조정할 때 발생할 수 있는 지연 시간이 단축되도록 커스텀 컨테이너를 사용하는 것이 좋습니다.

스트리밍

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

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

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

일괄

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

  • 수직 자동 확장은 작업이 실패되지 않도록 수직 확장하며 축소되지는 않습니다.
  • 전체 풀이 작업의 나머지 부분에 맞게 수직 확장됩니다.
  • 리소스 힌트가 사용되고 풀 여러 개가 생성되면 각 풀이 개별적으로 수직 확장됩니다.

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

  • --experiments=enable_batch_vmr
  • --experiments=enable_vertical_memory_autoscaling

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

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

제한사항

  • 작업자 메모리만 수직 확장됩니다.
  • 기본적으로 메모리 확장의 상한값은 16GiB이고 하한값은 6GiB입니다. GPU를 사용하는 경우 메모리 확장의 상한값은 26GiB이고 하한값은 12GiB입니다. 리소스 힌트를 제공하여 상한값과 하한값 모두 변경할 수 있습니다.
  • A100 GPU를 사용하는 풀에는 수직 자동 확장이 지원되지 않습니다.
  • 일괄 작업의 경우 실패한 항목이 포함된 번들이 파이프라인이 완전히 실패하기 전에 4회 넘게 재시도될 수 있습니다.
  • VPC 서비스 제어에서는 수직 자동 확장이 지원되지 않습니다. Dataflow Prime을 사용 설정하고 VPC 서비스 제어 경계 내에서 새 작업을 실행하면 작업에서 수직 자동 확장을 사용하지 않는 Dataflow Prime을 사용합니다.
  • 수직 자동 확장과 함께 적합 맞춤을 사용하면 배치 파이프라인만 지원됩니다.

수직 자동 확장 모니터링

수직 자동 확장 작업은 작업 및 작업자 로그에 게시됩니다. 이러한 로그를 보려면 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 플래그가 설정되어 있는지 확인합니다.

  • 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에서 더 높은 메모리 용량을 지원할 수 있는 작업자의 초기 구성을 선택할 수 있습니다. 하지만 이러한 초기 구성을 변경하면 파이프라인에서 사용할 수 있는 잠재적인 동시 로드 수가 늘어날 수 있습니다. 메모리를 많이 사용하는 변환의 경우 사용 가능한 동시 로드 증가로 인해 파이프라인에서 사용되는 메모리가 이전보다 늘어날 수 있습니다. 이러한 경우 메모리 사용량을 줄이기 위해 변환을 최적화해야 할 수 있습니다.

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

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

일반 로그 메시지

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

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

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

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

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

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