KYC 없는 암호화폐GPU 임대 · 3일, 7일 또는 30일
Capordia
언어: 한국어
메뉴
운영 / 병렬화

카드 수를 세기 전에 무엇이 함께 진행될지 선택하세요.

병렬 처리는 서로 다른 두 가지 필요에 대응합니다. 즉, 더 많은 독립적인 작업을 끝내거나 동일한 작업을 여러 GPU에 분배하는 것입니다. 먼저 무엇을 공유하고, 동기화하고, 모아야 하는지 파악하십시오. 각 카드는 자체 메모리를 유지하며 서버 토폴로지는 별도로 확인해야 합니다. 올바른 선택은 소프트웨어와 기대하는 결과에 따라 달라지며, 카드를 늘린다고 해서 통합 메모리나 단축된 소요 시간이 보장되는 것은 아닙니다.

01

분리할 수 있는 작업 단위 정의하기

승인된 결과가 무엇인지 적어 보십시오. 이미지 한 장, 처리된 문서 하나, 일련의 시뮬레이션, 또는 학습의 최종 상태 등입니다. 그다음 하나의 단위가 다른 단위를 기다리지 않고 계산될 수 있는지 물어보십시오. 두 문서는 처리 중에는 독립적일 수 있지만, 이후 공통된 인덱스 구축 단계에 의존할 수 있습니다. 이때 분할은 이 두 번째 단계를 병렬 처리라는 약속 속에 잊지 않고 설명해야 합니다.

컴퓨팅 상의 독립성과 업무 상의 독립성을 구분하십시오. 어떤 출력이 기술적 교환 없이 생성되더라도 전체 배치의 검증 전에는 사용할 수 없을 수 있습니다. 따라서 계산 단위, 납품 단위, 조립 규칙을 명확히 이름 붙이십시오. 이 공통된 용어가 없으면 구매팀은 카드 수를 세고, 애플리케이션 팀은 인스턴스나 동일 모델의 조각 수를 세는 불일치가 생깁니다.

02

독립적 작업과 긴밀한 협업 중 선택하기

독립적인 작업의 경우 각 프로세스는 자체 입력을 받고 식별 가능한 출력을 생성합니다. 다른 카드는 각 단계마다 동기화할 필요 없이 다른 작업을 실행할 수 있습니다. 이 방식은 일정 기간 동안 완료된 양이 목표일 때 유용합니다. 단일 작업을 자동으로 가속하지는 않으며, 데이터, 스토리지, 라이선스에 대한 경합도 여전히 확인해야 합니다.

협업 작업의 경우 장치들이 데이터를 교환하거나 중간 결과를 기다립니다. 프로그램이 이 분배를 관리해야 합니다. CUDA 가이드는 여러 GPU를 활용하려면 컨텍스트, 데이터 분배, 실행, 통신이 필요하다고 설명합니다. 이는 소프트웨어 경로와 관측된 시스템의 속성이며, 카탈로그에 있는 카드의 이름이 그러한 경로가 이미 존재한다는 것을 증명하지는 않습니다.

카드 수를 정하기 전에 구조를 선택하십시오
질문독립적 작업협업 작업
카드가 받는 것은 무엇인가?구별되는 완전한 작업 하나작업의 일부 또는 복제본
무엇을 조정해야 하는가?입력 할당과 출력 수집교환, 순서, 동기화
어떤 이점을 확인해야 하는가?기간당 승인된 결과의 수조정된 소요 시간 또는 용량으로 동일한 결과
어떤 실패를 예상해야 하는가?고립된 작업 또는 게시 하나참여자 한 명이 사용 불가할 때 그룹에 미치는 영향
03

복제와 메모리 분할을 혼동하지 마십시오

모델의 복사본이 여러 개라고 해서 그 파라미터가 카드들 사이에 나뉜다는 뜻은 아닙니다. PyTorch DistributedDataParallel은 각자 로컬 모델을 학습하는 프로세스 간에 그래디언트를 동기화합니다. 따라서 이 방식의 이름만으로는 한 카드에 너무 큰 모델이 여러 장에 들어갈 것이라고 결론 내릴 수 없습니다. 분할 메커니즘은 자체 문서와 자체 검증이 필요합니다.

각 카드의 메모리는 소프트웨어가 실제로 그곳에 두는 것, 즉 데이터, 모델 상태, 임시 공간, 그리고 있을 수 있는 교환을 감당해야 합니다. 최대치는 설정과 처리 단계에 따라 달라질 수 있습니다. 장치별로 이를 측정하십시오. 정격 용량의 합계는 한 카드는 메모리가 부족하고 다른 카드들은 남는 불균형을 가립니다. 배치의 총 용량만으로는 시나리오를 수용할 수 없습니다.

04

가상 예시: 여덟 개의 독립적 변환 분배하기

가상의 팀 « Index des ouvrages »는 여덟 개의 문서 변환을 준비합니다. 그들의 작업 가정에서 각 변환은 로딩과 출력을 포함해 카드 한 장을 12분간 점유합니다. 작업 하나는 카드에서 단독으로 처리되며, 최종 조립 전에는 어떤 교환도 필요하지 않습니다. 이 시간은 오직 추론을 구성하기 위한 것이며, Capordia가 제안하는 어떤 실행이나 GPU 성능도 설명하지 않습니다.

카드 한 장으로 여덟 개의 연속 작업은 8 × 12 = 96분이 걸립니다. 카드 두 장으로 각각 네 개씩 균형 있게 분배하면 병렬화 가능한 부분은 이론적으로 48분입니다. 최종 조립에 별도 워크스테이션에서 10분이 필요하다면 전체 경로는 각각 106분 또는 58분이 되며, 시작 전 대기는 제외합니다. 이 계산은 두 카드가 서로의 로딩을 늦추지 않는다고 가정합니다.

예시 계산이며 실측이 아님 — 12분짜리 작업 여덟 개와 10분의 조립
구성병렬화 가능한 부분조립계산된 소요 시간
하나의 카드, 여덟 가지 작업96분10분106분
두 개의 카드, 각각 네 개의 작업48분10분58분
05

이 이론적 이득을 무효화할 수 있는 요인 파악하기

같은 예에서 문서의 크기가 서로 다를 수 있습니다. 가장 긴 네 개를 한 카드에 배정하면 다른 카드는 처리 후반에 대기하게 됩니다. 가용성에 따라 분배하면 균형을 개선할 수 있지만, 신뢰할 수 있는 배정 메커니즘과 수용 정책이 필요합니다. 대기열 가이드에서 이 구성을 다루며, 본 계산은 그것이 이미 구축되었다고 보증하지 않습니다.

스토리지 또한 지배적인 공유 자원이 될 수 있습니다. 동일한 데이터를 읽거나 동시에 대용량 결과를 쓰는 두 프로세스가 반드시 두 배의 처리량을 갖는 것은 아닙니다. 도구와 라이선스의 동시성 한도도 확인하십시오. 병렬화할 수 없는 부분이 늘어나면 전체 일정을 다시 작성하십시오. 한 단계에서 절약한 시간이 다른 곳에서 추가된 지연을 가려서는 안 됩니다.

06

분산 작업을 위해 실제 토폴로지 제공받기

어떤 카드가 보이는지, 어떻게 통신하는지, 어떤 호스트 자원을 프로세스들이 공유하는지 문의하십시오. 관리자 콘솔이 아니라 사용하는 환경에서 접근 가능한 장치를 확인하십시오. CUDA는 다른 GPU의 메모리에 접근하는 것이 무엇보다도 시스템의 토폴로지와 기능에 달려 있다고 명시합니다. 모델이 어떤 기능을 지원한다고 해서 해당 머신에 기대하는 링크가 존재한다는 것이 입증되지는 않습니다.

데이터 흐름의 간단한 도식을 유지하십시오. 입력, 관련 카드 또는 프로세스, 교환, 최종 취합, 출력입니다. 각 화살표마다 호스트 메모리를 거치는지, GPU 간 링크를 통과하는지, 네트워크를 통과하는지 파악하십시오. 이 뷰는 수신 검사 항목을 선택하는 데 사용됩니다. 특정 기술을 강제하지 않으며, 멀티 GPU 요청을 특정 토폴로지의 약속으로 바꾸지도 않습니다.

07

기대 결과를 바꾸지 않고 두 가지 구성을 비교하기

대표적인 소규모 코퍼스를 준비하고, 승인된 대상에서 기준 구성과 후보 구성을 실행하십시오. 버전, 설정, 기대 품질, 조립 규칙을 유지하십시오. 허용된 결과에 도달하는 시간, 각 카드의 최대 메모리 사용량, 오류, 공유 자원 소비를 비교하십시오. 관찰과 추정을 구분하십시오. 제안된 명령은 이미 얻은 결과와 동일하지 않습니다.

특히 허용된 출력 수가 동일하게 유지되고 입력이 누락되지 않는지 확인하십시오. 연산 순서에 민감한 계산의 경우, 임의의 동등성보다는 정당화된 허용 오차를 선택하십시오. 품질은 다르지만 더 빨리 끝나는 구성은 다른 문제에 대한 답입니다. 공유가 이롭지 않은 경우도 유지하십시오. 이 한계가 공통 부하 없는 카드 순위보다 선택을 더 잘 설명합니다.

08

선택을 요구 사양으로 변환하기

마지막으로 동시 작업 수, 각각에 필요한 카드, 필수 조건을 작성하십시오. 두 카드에 분산된 하나의 작업과 한 카드의 두 작업은 카드 총수가 같더라도 서로 다른 구성입니다. 선택한 구성은 필요한 구성을 허용해야 합니다. 명목상의 총수에서 출발하여 나중에 용도를 지어내지 마십시오.

카탈로그에는 카드 묶음이 표시됩니다. B200 묶음에는 각각 180GB인 GPU 두 개가 포함되지만, 이 구성이 소프트웨어가 두 GPU를 하나의 메모리처럼 활용한다는 것을 보장하지는 않습니다. 다음 단계는 필요 사항을 묶음에 맞추고 실제로 필요한 속성을 인수하는 것입니다. 일정, 비용, 결정은 결정적인 조건이 확인되기 전까지 잠정적으로 남습니다.

결정을 위한 질문

GPU 두 개가 항상 한 개보다 빠릅니까?

아닙니다. 이득은 병렬화 가능한 비율, 교환, 공유 자원에 따라 달라집니다. 분할할 수 없는 단일 작업에서는 두 번째 카드가 사용되지 않을 수 있습니다. 명확한 프로토콜에서 동일하게 허용된 결과에 도달하는 시간을 비교하십시오.

카드 두 장 묶음이 내 프로그램의 사용 가능한 메모리를 두 배로 늘립니까?

자동으로 그렇지는 않습니다. 각 장치는 자체 메모리를 가지며 프로그램이 상태나 데이터를 분산해야 합니다. 반대로 모델 복제는 이러한 상태의 상당 부분을 중복시킬 수 있습니다. 소프트웨어 메커니즘과 카드별 최대 사용량을 확인하십시오.

언제 독립적인 작업부터 시작해야 합니까?

각 단위를 개별적으로 계산할 수 있고 목표로 하는 이득이 더 많은 단위를 완료하는 것일 때입니다. 다만 할당, 부하 균형, 최종 조립을 검증해야 하며 저장소와 라이선스가 자동으로 따라온다고 가정해서는 안 됩니다.

계속 진행하기구성 살펴보기자주 묻는 질문 보기