Machine Learning on VMware Cloud Platform – Part 1에서는 개념, 교육 및 구축의 세 가지 단계를 다뤘고, part 2 에서는 데이터 스트림, 필요한 인프라 구성 요소, vSphere는 ML 플랫폼의 리소스 활용 효율성을 높이는 데 도움이 될 수 있습니다. 이 부분에서는 교육 및 추론 작업 부하 영역에 대해 조금 더 자세히 알아보려고 합니다.
ML 인프라를 구축할 때 플랫폼의 목적을 고려하는 것이 가장 좋습니다. 추론 워크로드를 처리하기 위해 구축합니까, 아니면 교육 플랫폼을 구축합니까? 조직 내에 직접 모델을 만들고 교육하는 데이터 과학 팀이 있습니까? 아니면 사전 훈련된 모델을 획득할 예정입니까? 교육받은(통합) 모델은 어디에 배치됩니까? 데이터 센터, 산업 현장 또는 소매 위치에 배치됩니까?
IT 아키텍처 리소스 요구 사항의 관점에서, 이러한 교육 및 추론 워크로드는 계산 능력과 데이터 스트림 요구 사항이 다릅니다. 플랫폼 설계자의 업무 중 하나는 교육 시간을 단축하는 플랫폼을 만드는 것입니다. 정확성을 희생하지 않고 플랫폼의 기술을 사용하여 시간을 훨씬 더 단축하는 것이 데이터 과학자의 기술과 지식입니다.
이 파트에서는 교육 및 추론 워크로드의 주요 차이점과 요구 사항에 대해 자세히 살펴보겠습니다. 데이터 과학자가 사용하는 용어와 개념을 숙지하고 해당 지식을 전문 분야에 적용할 수 있도록 지원합니다. 궁극적으로 이 개요는 머신 러닝 워크로드를 가속화하는 vSphere 플랫폼의 기술 솔루션에 대한 개요를 제시하는 데 도움이 됩니다.
기계 학습 알고리즘의 유형
인기 있는 머신 러닝 아웃렛과 팟캐스트를 검토할 때 일반적으로 대형 모델 교육에 대해서만 듣게 됩니다. 많은 사람들에게 머신 러닝은 끝없는 교육일이 필요한 거대 모델과 대규모 네트워크를 통한 딥 러닝과 같습니다. 하지만 실제로는 그렇지 않습니다. 우리 모두가 가장 유명한 미국 은행에서 일하는 것은 아니다. 우리 모두가 전 세계 선박 회사의 실시간 선단 관리와 항로 관리를 하거나 동시에 들어오는 5개의 토네이도의 모든 가능한 궤적을 계산할 필요는 없습니다. 현실은 대부분의 회사가 간단한 알고리즘으로 간단한 모델을 작업한다는 것입니다. 간단한 모델은 훈련하기가 더 쉽습니다. 간단한 모델은 테스트하기가 더 쉽습니다. 단순 모델은 리소스를 많이 사용하는 것이 아니며, 무엇보다 단순 모델은 업데이트하기가 더 간단하며 급변하는 세계에 맞춰져 있습니다. 따라서 모든 기업이 비즈니스 요구사항을 해결하기 위해 딥 러닝 GPT-3 모델 또는 대규모 ResNet을 구축하지는 않습니다. 이들은 400개의 GPU에서 실행하지 않고도 수익을 증대하거나 비즈니스 비용을 절감할 수 있는 “간단한” 머신 러닝 알고리즘이나 신경망을 찾고 있습니다.
다음 기사에서 신경망을 다루겠지만, 기계 학습 알고리즘의 기초를 이해하는 데 관심이 있다면 다음과 같은 인기 있는 알고리즘을 살펴보는 것이 좋습니다.
데이터 흐름
학습은 최고 수준의 정확도로 분류, 탐지, 권장 또는 기타 서비스를 생성하는 신경망 모델을 생성합니다. 훈련의 가장 중요한 규칙은 더 많은 데이터를 사용할수록 더 높은 정확도를 얻는 것입니다. 이는 데이터 과학자가 시스템에 방대한 양의 데이터를 방출한다는 것을 의미합니다. 데이터 흐름과 관련 구성 요소를 이해하면 교육 시간을 크게 줄일 수 있는 플랫폼을 설계하는 데 도움이 됩니다.
대부분의 신경망은 (오프라인) 배치 학습 방법을 통해 훈련되지만 온라인 훈련 방법도 사용됩니다. 이 방법에서 모델은 더 작은 데이터 배치를 제공하여 학습됩니다. 이 모델은 활동적이며 즉석에서 학습합니다. 배치 학습보다 리소스 집약도가 낮은지 또는 오프라인 교육이라고도 하는지는 모델이 지속적으로 학습하기 때문에 논쟁의 여지가 있습니다. 모델에 빠르게 영향을 미칠 수 있는 새로운 데이터에 민감할 수 있으므로 매우 신중하게 모니터링해야 합니다. 특정 주가 시스템은 시장 동향에 신속하게 대응하기 위해 온라인 교육을 사용하는 ML 모델을 배치합니다.
추론 서비스는 예를 들어 자율 주행 차량의 보행자 식별, 고속 컨베이어 벨트를 가로질러 비행하는 패키지, 제품 권장 사항 또는 음성 대 텍스트 번역과 같은 대기 시간에 관한 것입니다. 경우에 따라서는 시스템의 응답을 기다릴 여유가 없습니다. 이러한 워크로드의 대부분은 단일 데이터 샘플이거나, 기껏해야 몇 개의 명령이 일괄 처리되어 있습니다. 추론의 데이터 흐름은 자연의 스트리밍으로 간주됩니다. 그 결과, 추론에 대한 전반적인 계산 로드는 교육 작업 부하보다 훨씬 더 낮습니다.
Training | Inference | |
Data Flow | Batch Data | Streaming Data |
데이터 세트 및 배치(Batch)
모델 교육 중에 모델은 교육 세트, 검증 세트 및 테스트 세트와 같은 다양한 데이터 세트를 사용하여 교육합니다. 교육 세트는 모델이 학습해야 할 내용을 인식하는 데 도움이 됩니다. 검증 데이터 세트는 데이터 과학자가 숨겨진 계층 수나 네트워크 계층 크기와 같은 특정 하이퍼 매개 변수 조정의 효과를 이해하는 데 유용합니다. 세 번째 데이터 세트는 테스트 세트이며, 훈련된 신경망이 생산에 투입되기 전에 보이지 않는 데이터에서 얼마나 잘 수행되는지 입증합니다.
데이터 세트는 교육에 사용되는 샘플을 제공합니다. 이러한 데이터 세트는 회사 데이터로 생성하거나 타사로부터 가져올 수 있습니다. 또는 이 두 가지를 조합하여 기업이 고객에 대한 더 나은 통찰력을 얻기 위해 자체 데이터를 추가로 획득하는 경우도 있습니다. 이러한 데이터 세트는 상당히 클 수 있습니다. 예를 들어 Imagenet-1K 데이터 세트가 있는 Resnet50 모델이 있습니다. Resnet50은 이미지 분류 교육 네트워크이며, Imagenet-1K 데이터 세트에는 128만 개의 이미지(155.84 GiB)가 포함되어 있습니다.
최신 NVIDIA GPU 세대(Ampere 및 Hopper)도 GPU 장치에 최대 80GB의 메모리를 제공하므로 데이터셋을 메모리에 완전히 장착할 수는 없습니다. 따라서 데이터 세트는 더 작은 배치로 분할됩니다. 배치 크기는 신경망 모델 훈련에 중요한 역할을 합니다. 이 훈련 기술을 미니 배치 경사 하강이라고 합니다. 실제 메모리 제한을 회피할 뿐만 아니라, 모델의 정확성뿐만 아니라 교육 프로세스의 성능에도 영향을 미칩니다. 배치 사이징에 대해 궁금하다면 연구 논문 “Revisiting small batch training for deep neural networks“을 읽어보십시오. 이왕 하는 김에 명명법을 좀 더 다루도록 하죠.
훈련 주기 동안 신경망은 데이터 세트의 예를 처리합니다. 이 주기를 epoch이라고 합니다. 데이터 과학자는 전체 데이터 세트를 더 작은 배치 세트로 분할합니다. 사용된 교육 예제의 수를 batch size라고 합니다. Iteration은 일괄 처리의 완전한 통과입니다. 반복 횟수는 단일 에폭을 완료하는 데 필요한 배치의 수입니다. 예를 들어 Imagenet-1K 데이터 세트에는 128만 개의 이미지가 포함되어 있습니다. 권장되는 배치 크기는 32개 이미지입니다. 데이터 세트의 단일 에폭을 완료하려면 1.280.000 / 32 = 40.000번의 반복이 필요합니다. 한 시대가 얼마나 빨리 완성되는지는 여러 가지 요인에 달려 있습니다. 교육 실행은 일반적으로 여러 에폭을 호출합니다.
교육 및 추론 모두 배치 크기를 사용합니다. 대부분의 사용 사례에서 추론은 가능한 한 신속하게 대응하는 데 중점을 둡니다. 많은 추론 사용 사례는 실시간으로 데이터를 수집 및 변환하고 예측, 분류 또는 권장 사항을 생성합니다. 이를 실제 사용 사례로 환산하면 드라이브 스루에서 자동차를 세는 것으로 주가 예측에 대해 이야기하고 있습니다. 요청이 들어오면 바로 처리해야 합니다. 따라서 제한된 배치에 대한 배치가 발생하지 않습니다. 시스템이 작동 중일 때 받는 워크로드의 양에 따라 다릅니다. 1-4개의 예제를 배치하여 클래스를 스트리밍 워크로드로 추론합니다.
훈련을 위한 정확한 배치 크기를 결정하는 것 자체가 과학입니다. 배치 크기에 대한 스위트 스팟에 대한 많은 연구 논문과 중간 기사들이 있습니다. 배치 크기의 스펙트럼에는 어느 지점에서나 장점과 단점이 있습니다. 배치 크기가 작을수록 메모리 설치 공간이 줄어들고 처리량이 향상될 수 있으며, 배치 크기가 클수록 병렬성이 증가하고 계산 비용이 절감됩니다.
마지막 요소는 사내 환경에서 교육할 때 데이터 과학자와 관련이 없을 수도 있지만, 이해하면 좋습니다. 배치가 스토리지 또는 호스트 메모리에서 GPU 디바이스 메모리로 이동하는 경우 CPU 싸이클이 필요합니다. 더 큰 배치를 사용하는 경우 데이터를 이동하기 위한 컴퓨팅 호출 수를 줄여 궁극적으로 CPU 설치 공간을 줄일 수 있습니다. 물론 여기에는 주로 알고리즘의 성능 측면에서 데이터 과학자가 해결 방법을 알아내야 하는 단점도 있습니다. 따라서 사용 사례에 따라 모델당 배치 크기가 다르다는 것을 알 수 있습니다. 스펙트럼의 양 끝을 강조하는 두 가지 훌륭한 논문: “Friends don’t let friends use mini-batches larger than 32“와 “Scaling TensorFlow to 300 million predictions per second“입니다.
플랫폼 설계자에게 중요한 점은 추론이 주로 지연 시간에 집중된다는 것입니다. 추론 작업량이 이미지 분류 또는 개체 감지를 위한 비디오 스트리밍 기반 작업량인 경우 시스템은 특정 수준의 처리량을 제공할 수 있어야 합니다. 교육은 주로 처리량 기반입니다. 배치 크기는 데이터 과학자를 위한 도메인별(하이퍼) 매개 변수입니다. 그러나 이는 궁극적으로 전체 CPU 설치 공간과 효율적인 분산 교육이 사용되는지에 영향을 미칠 수 있습니다. 데이터 세트 크기에 따라 데이터 과학자는 여러 GPU에 배치되는 분산 교육을 선택할 수 있습니다.
Training | Inference | |
스토리지 특징 | 처리량(throughput) 기반 | 지연시간(Latency) 기반, 가끔 처리량 |
Batch Size | 1-32 사이의 권장 사항이 많습니다. 배치 크기가 작을수록 메모리 설치 공간이 줄어듭니다. 배치 크기가 작을수록 알고리즘 성능이 향상됩니다(일반화). 배치 크기가 클수록 컴퓨팅 효율성이 향상됩니다. 배치 크기가 클수록 병렬화가 증가합니다(Multi-gpu). | 1-4 |
데이터 파이프라인 및 액세스 패턴
데이터 로딩은 딥 러닝 파이프라인을 구축하고 모델을 교육하는 데 필수적입니다. 데이터로 수행하는 모든 작업이 메모리를 차지한다는 것을 기억하십시오. 각 아키텍처에 대해 살펴보기 전에 모든 “움직이는 부분”을 살펴보겠습니다.
데이터 로딩은 딥 러닝 파이프라인을 구축하고 모델을 교육하는 데 필수적입니다. 데이터로 수행하는 모든 작업이 메모리를 차지한다는 것을 기억하십시오. 각 아키텍처에 대해 살펴보기 전에 모든 “움직이는 부분”을 살펴보겠습니다.
데이터 세트는 저장 장치에 저장됩니다. vSAN 데이터스토어 또는 지원되는 모든 네트워크 연결 스토리지 플랫폼(NFS, VMFS, vVOL)일 수 있습니다. 배치가 데이터스토어에서 검색되어 GPU 디바이스 메모리(호스트에서 디바이스(HtoD))로 로드되기 전에 호스트 메모리에 저장됩니다. 모델 알고리즘이 배치를 완료하면 알고리즘은 출력을 호스트 메모리(디바이스에서 호스트 – DtoH)로 다시 복사합니다. 제가 간단한 도표를 만들어 가장 간단한 데이터 흐름을 보여드렸으니 참고하시기 바랍니다. 일반적으로 이중 소켓 시스템이 있습니다. 즉, 상호 연결과 여러 개의 PCI 컨트롤러가 관련되어 있으며, GPU의 NUMA 인접성과 관련하여 VM 배치를 처리해야 합니다. 그러나 이러한 복잡한 주제는 다른 기사에서 나중에 설명합니다. 한번에 한 단계씩.
NUMA 패닉에 대한 세부 정보를 입력하지 않고도 경로의 길이를 즉시 확인할 수 있습니다. 데이터 과학자들은 데이터셋을 빠른 스토리지 장치에서 가속기에 최대한 가깝게 저장하는 것을 선호합니다. 왜냐고요? 데이터를 로드하면 교육 시간이 크게 단축될 수 있습니다. 자신의 시험 환경에 대해 약간의 조사를 한 Gorkem Polat의 말을 인용합니다.
One iteration of the ResNet18 Model on ImageNet data with 32 batch size takes 0.44 seconds. For 100 epochs, it takes 20 days! When we measure the timing of the functions, data loading+preprocessing takes 0.38 seconds (where 90% of this time belongs to the data loading part) while the optimization (forward+backward pass) time takes only 0.055 seconds. If the data loading time is reduced to a reasonable time, full training can be easily reduced to 2.5 days!
대부분의 데이터 세트가 너무 커서 GPU 메모리에 맞지 않습니다. 대부분의 경우 전체 데이터 집합을 호스트 메모리에 미리 로드하는 것은 의미가 없습니다. 가장 좋은 방법은 여러 배치를 사전 추출하여 네트워크 대기 시간을 마스킹하는 것입니다. 대부분의 ML 프레임워크는 데이터 로딩을 위한 기본 제공 솔루션을 제공합니다. 데이터 파이프라인이 여러 배치를 사전 추출하여 꽉 찬 상태를 유지하는 한 데이터 파이프라인을 교육 과정과 비동기식으로 실행할 수 있습니다. 비결은 빠른 스토리지와 짧은 대기 시간과 높은 처리량 네트워크가 작동하는 여러 파이프라인을 가득 채우는 것입니다. 논문 “ImageNet training in Minutes”에 따르면, Nvidia M40 GPU는 ImageNet-1k 데이터 세트에서 90-epoch Resnet-50 교육 실행 하나만 완료하는 데 14일이 소요됩니다. M40은 2015년에 출시되었고 24GB의 메모리 공간을 가지고 있었습니다. 그 결과, 데이터 과학자들은 병렬화를 통해 여러 GPU에 워크로드를 분산시킬 수 있는 방안을 모색하고 있습니다. 이러한 여러 GPU는 해당 데이터셋에 최대한 빨리 액세스해야 하며 서로 통신해야 합니다. 다중 GPU 가속기 설정에는 여러 가지 방법이 있습니다. 이것은 제가 기꺼이 다음 파트를 위해 남겨둔 주제입니다.
데이터셋 랜덤 읽기 액세스
모욕 후 부상을 추가하기 위해 교육 일괄 판독은 완전히 무작위입니다. API를 사용하면 데이터 과학자가 샘플 수를 지정할 수 있습니다. Pytorch 예제를 사용합니다.
train_loader = torch.utils.data.DataLoader(train_set, batch_size=32, shuffle=True, num_workers=4)
이 프로세스는 데이터 집합에서 32개의 랜덤 예를 추출하여 일괄적으로 전송합니다. Shuffle=true 명령은 Epoch가 완료된 후 발생하는 작업에 대한 명령입니다. 이렇게 하면 다음 Epoch는 동일한 순서로 동일한 이미지를 볼 수 있습니다. 느린 매체의 대규모 데이터 세트에서 32개의 랜덤 예를 추출하는 것은 교육 시간을 줄이는 데 도움이 되지 않습니다. 데이터셋을 여러 개의 스핀들에 배치하면 데이터 과학 팀을 미치게 할 것입니다. 데이터셋을 가능한 한 GPU 장치에 가깝게 빠른 매체로 유지하는 것이 좋습니다.
Training | Inference | |
Data Access | 대용량 데이터 세트에 랜덤 액세스합니다. 여러 배치는 파이프라인을 가득 채우는 프리페치입니다. 빠른 저장 매체를 권장합니다. 분산 교육에 빠른 스토리지 및 네트워크를 권장합니다. | Streaming Data |
다음 파트에서는 모델의 메모리 공간 및 수치 정밀도에 대해 설명합니다.
출처 : https://frankdenneman.nl/2022/06/30/machine-learning-on-vmware-platform-part-3-training-versus-inference/