예측 및 추론 파이프라인 및 학습용 데이터 준비에 Dataflow ML의 확장 데이터 처리 기능을 사용할 수 있습니다.
요구사항 및 제한사항
- Dataflow ML은 일괄 및 스트리밍 파이프라인을 지원합니다.
RunInference
API는 Apache Beam 2.40.0 이상 버전에서 지원됩니다.MLTransform
API는 Apache Beam 2.53.0 이상 버전에서 지원됩니다.- 모델 핸들러는 PyTorch, scikit-learn, TensorFlow, ONNX, TensorRT에 사용할 수 있습니다. 지원되지 않는 프레임워크의 경우 커스텀 모델 핸들러를 사용할 수 있습니다.
학습용 데이터 준비
MLTransform
특성을 사용하여 ML 모델을 학습시킬 수 있는 데이터를 준비합니다. 자세한 내용은MLTransform
으로 데이터 사전 처리를 참조하세요.Kubeflow Pipelines(KFP) 또는 TensorFlow Extended(TFX)와 같은 ML-OPS 프레임워크와 함께 Dataflow를 사용합니다. 자세한 내용은 ML 워크플로의 Dataflow ML을 참조하세요.
예측 및 추론 파이프라인
Dataflow ML은 Dataflow의 강력한 기능을 Apache Beam의 RunInference
API와 결합합니다.
개발자는 RunInference
API를 사용하여 모델의 특성과 속성을 정의하고 이 구성을 RunInference
변환에 전달합니다. 이 기능을 사용하면 모델의 구현 세부정보를 몰라도 사용자가 Dataflow 파이프라인에서 모델을 실행할 수 있습니다. TensorFlow, PyTorch 등 데이터에 가장 적합한 프레임워크를 선택할 수 있습니다.
파이프라인에서 여러 모델 실행
RunInference
변환을 사용하여 Dataflow 파이프라인에 여러 추론 모델을 추가합니다. 코드 세부정보를 포함한 자세한 내용은 Apache Beam 문서의 멀티 모델 파이프라인을 참조하세요.
교차 언어 파이프라인 빌드
Java 파이프라인에 RunInference를 사용하려면 교차 언어 Python 변환을 만듭니다. 파이프라인이 변환을 호출하여 전처리, 후처리, 추론을 수행합니다.
자세한 안내 및 샘플 파이프라인은 Java SDK에서 RunInference 사용을 참조하세요.
Dataflow에서 GPU 사용
가속기를 사용해야 하는 일괄 또는 스트리밍 파이프라인의 경우 NVIDIA GPU 기기에서 Dataflow 파이프라인을 실행할 수 있습니다. 자세한 내용은 GPU로 Dataflow 파이프라인 실행을 참조하세요.
Dataflow ML 문제 해결
이 섹션에서는 Dataflow ML을 사용할 때 유용할 수 있는 문제 해결 전략과 링크를 제공합니다.
스택은 각 텐서 크기가 같을 것으로 예상함
RunInference
API를 사용할 때 크기가 다른 이미지, 또는 길이가 다른 단어 임베딩을 제공하면 다음 오류가 발생할 수 있습니다.
File "/beam/sdks/python/apache_beam/ml/inference/pytorch_inference.py", line 232, in run_inference batched_tensors = torch.stack(key_to_tensor_list[key]) RuntimeError: stack expects each tensor to be equal size, but got [12] at entry 0 and [10] at entry 1 [while running 'PyTorchRunInference/ParDo(_RunInferenceDoFn)']
이 오류는 RunInference
API가 크기가 다른 텐서 요소를 일괄 처리할 수 없기 때문에 발생합니다. 해결 방법은 Apache Beam 문서의 텐서 요소를 일괄 처리할 수 없음을 참조하세요.
대규모 모델에서 메모리 부족 오류 방지
중형 또는 대형 ML 모델을 로드하면 머신의 메모리가 부족할 수 있습니다. Dataflow는 ML 모델을 로드할 때 메모리 부족 (OOM) 오류를 방지하는 데 도움이 되는 도구를 제공합니다. 다음 표를 사용하여 시나리오에 적합한 접근 방식을 결정하세요.
시나리오 | 솔루션 |
---|---|
모델이 메모리에 들어갈 만큼 작습니다. |
추가 구성 없이 RunInference 변환을 사용합니다. RunInference 변환은 스레드 간에 모델을 공유합니다. 머신에 CPU 코어당 모델 하나를 맞출 수 있다면 파이프라인에서 기본 구성을 사용할 수 있습니다.
|
서로 다르게 학습된 여러 모델이 동일한 작업을 실행하고 있습니다. | 모델별 키를 사용합니다. 자세한 내용은 서로 다르게 학습된 모델 여러 개로 ML 추론 실행을 참고하세요. |
하나의 모델이 메모리에 로드되고 모든 프로세스가 이 모델을 공유합니다. |
맞춤 모델 핸들러를 빌드하는 경우 |
머신에 로드되는 모델의 정확한 수를 구성해야 합니다. |
로드되는 모델 수를 정확하게 제어하려면 커스텀 모델 핸들러를 빌드하는 경우 |
Dataflow의 메모리 관리에 관한 자세한 내용은 Dataflow의 메모리 부족 오류 문제 해결을 참고하세요.
다음 단계
- GitHub에서 Dataflow ML 노트북을 살펴봅니다.
- Apache Beam의 AI/ML 파이프라인 문서에서 Apache Beam과 함께 ML을 사용하는 방법 자세히 알아보기
RunInference
API에 대해 자세히 알아보기RunInference
변환을 모니터링하는 데 사용할 수 있는 측정항목 알아보기