소식

PyTorch 팀은 2024년 하반기 개발 방향을 밝히는 거의 100페이지에 달하는 문서를 통해 기술 로드맵을 선보였습니다.

2024-07-15

한어Русский языкEnglishFrançaisIndonesianSanskrit日本語DeutschPortuguêsΕλληνικάespañolItalianoSuomalainenLatina


새로운 지혜 보고서

편집자: 양차오

[새로운 지혜 소개]최근 PyTorch 팀은 내부 기술 문서를 직접 수정한 개발 로드맵을 처음으로 발표하여 이 클래식 오픈 소스 라이브러리의 다음 개발 방향을 공개했습니다.

AI 분야에서 Python으로 개발한다면 PyTorch는 오랜 친구 중 하나일 것입니다. 2017년 메타AI가 머신러닝, 딥러닝 분야 오픈소스 라이브러리를 출시해 올해로 7년차를 맞았다.

Assembly AI의 2021년 통계에 따르면 HuggingFace에서 가장 인기 있는 상위 30개 모델은 모두 PyTorch에서 실행될 수 있으며, 모델 중 92%가 PyTorch의 독점 모델입니다. 이 비율로 인해 TensorFlow를 포함한 많은 경쟁업체는 손이 닿지 않습니다.


바로 7월 10일, PyTorch의 엔지니어링 팀은 2024년 하반기 개발 방향을 제시하는 로드맵 문서를 처음으로 공개했습니다.

Meta의 공동 창립자이자 PyTorch 팀을 이끄는 Soumith Chintala는 공식적으로 트위터를 통해 이 소식을 발표했습니다.

그는 엔지니어들의 연구 동기와 목표를 공개하고 싶다고 말했습니다.

"PyTorch 개발은 모두 GitHub에 공개되지만, 다양한 PyTorch 계열사 팀이 작성한 실제 계획 및 로드맵 문서는 공개되지 않으므로 투명성을 높이기 위해 변경하기로 결정했습니다."


PyTorch 팀의 기술 프로젝트 관리자인 Gott Brath도 포럼에서 비슷한 성명을 발표했습니다.


우리는 팀이 PyTorch에서 수행하는 작업의 로드맵을 공유하는 방법에 대해 생각해 왔습니다. 우리는 2년마다 계획을 세우고 있으므로 PyTorch의 여러 핵심 영역에 대한 2024년 H2 OSS 계획의 일부 공개 버전입니다.

이러한 파일은 기본적으로 PyTorch 팀의 내부 문서 및 작업 계획이며 일부 콘텐츠를 삭제한 후 PyTorch의 다음 측면을 포함하는 로드맵으로 게시되었습니다.

- 핵심 라이브러리 및 핵심 성능

- 분산

- 토치춘、토치렉、토치비전

- 파이토치 엣지

- 데이터 로딩(DataLoading)

- 컴파일러 코어 및 배포

- 개발자 인프라

각 문서에는 OKR 아이디어를 기반으로 하는 최소한 세 부분이 포함되어 있습니다.

- 배경

- 상위 5개 집중 영역 및 목표: 목표, 주요 결과, 알려지거나 알려지지 않은 위험 및 해당 완화 조치(최대 1페이지)

- 엔지니어링 수준 향상을 위한 상위 3~5개 측면: BE 필러 분류, 목표, 지표/상태/구체적 목표, 알려지거나 알려지지 않은 위험 및 완화 조치, 영향/비용, 우선순위/신뢰 수준(최대 1페이지)

그 중 BE Pillar는 Meta가 개발팀에게 작성한 "5가지 격언"이라고 볼 수 있습니다. 구체적인 내용은 다음과 같습니다.

더 나은 코드, 더 나은 문서, 팀 강화, 현대적 코드, 더 나은 아키텍처

'최대 한 페이지' 규칙으로 인해 문서 길이 때문에 고민을 하신 개발자가 있는지 모르겠습니다. 결국 문서는 긴 문서보다 비용이 더 많이 듭니다. 한 페이지에 많은 개발 요구 사항을 압축하면 동료의 시간도 절약될 뿐만 아니라, 또한 작가의 기술을 테스트합니다.

이 밖에도 다양한 모듈팀의 협업 강조, API 통합 및 외부 파트너와의 공동 개발 강조, 오픈소스 커뮤니티 및 개발자와의 상호작용 강조 등 메타 개발팀의 뛰어난 아이디어도 문서에서 엿볼 수 있다.

ExecuTorch와 같은 새로운 코드 기반을 시작하거나 PyTorch 컴파일러의 영향력을 높이고자 할 때 팀은 일반적으로 두 가지 측면에서 시작합니다. 하나는 성능을 개선하기 위해 최선을 다하고 다른 한편으로는 SOTA를 직접 목표로 삼는 것입니다. 심층 통합 더 많은 기본 사용 사례를 시작해보세요.

아마도 이것이 수년간 오픈 소스 분야에서 Meta가 성공할 수 있었던 열쇠일 것입니다.

다음은 각 문서의 내용을 일부 발췌하고 요약한 것입니다.


원래 주소: https://dev-discuss.pytorch.org/t/meta-pytorch-team-2024-h2-roadmaps/2226

핵심 라이브러리 및 핵심 성능

문서에 포함된 핵심 라이브러리에는 TendorDict, torchao, NN, TorchRL 등이 포함됩니다.

성능 측면에서 PyTorch 팀은 모델 훈련 및 추론에서 SOTA 성능을 달성한다는 목표를 제안했으며, 그 조치에는 전체 PyTorch 기술 스택과 결합하기 위한 아키텍처 최적화 기술 및 고성능 커널 도입이 포함됩니다.

지난 한 해 동안 GenAI의 급속한 발전을 목격했습니다. 연구 분야의 개발을 지원하기 위해 많은 외부 라이브러리가 등장했지만, 이들 중 다수는 PyTorch에 직접적으로 의존하지 않으며 이는 과학 연구 분야에서 PyTorch의 지배력을 위협할 것입니다.

다시 이러한 속도를 따라잡기 위해 PyTorch는 다양한 Transformer 아키텍처의 모델을 지원하는 빌딩 블록 및 API(주로 torchao에 통합됨)를 포함하여 양자화, 희소화, MoE 및 저정밀 훈련과 같은 일반적인 개발 기술을 지원할 것입니다. 성능을 향상시킵니다.

torchao 라이브러리는 연구원들이 PyTorch 프레임워크 내에서 고성능 dtype, 레이아웃 및 최적화 기술을 사용자 정의할 수 있도록 지원하여 교육, 추론, 튜닝과 같은 다양한 시나리오로 사용 범위를 확장합니다.

또한 핵심 라이브러리 업데이트에는 다음이 포함됩니다.

- 출시된 자동 최적화 라이브러리 torchao는 획기적인 성공을 거두었습니다. 다음 단계는 코드 구성을 개선하고 핵심 라이브러리에서 수치 연산을 분리하는 것입니다.

- TendorDict의 핵심 모듈성을 해결하고 로드/저장 직렬화를 지원하며 열성 모드에서 2배 더 빠르게 실행되도록 합니다.

- 상반기 메모리 매핑 로드 성공에 이어, 모델 로딩/저장 성능 및 보안성 지속적으로 개선

- TorchRL 오버헤드를 50% 줄입니다.

- NoGIL에 대한 핵심 지원이 추가되었습니다.

- 사용자가 보고한 TORCH_env 변수가 작동하지 않는 문제 수정

이 문서에서는 또한 nn.transformer 모듈의 사용 중단에 대해 언급하며, torch.compile, sdpa, NJT, FlexAttention, custom_op, torchao 및 기타 모듈을 사용하여 Transformer를 구축하는 방법을 보여주는 일련의 튜토리얼과 사용 사례가 공개될 것이라고 말했습니다.

분산

LLM 사전 훈련은 일반적으로 수십 또는 수천 개의 GPU에 걸쳐 이루어지며 모델의 매개변수 규모가 점차 증가함에 따라 단일 GPU에서 추론 및 미세 조정을 완료하기가 어렵습니다.

따라서 PyTorch의 다음 "분산" 레이아웃은 훈련, 추론, 미세 조정의 세 가지 링크를 포괄적으로 다루며 초대형 분산 훈련, 높은 메모리 효율의 미세 조정 및 다중 호스트 분산 추론을 달성할 것을 제안합니다. .

기차

PyTorch에서 기본적으로 지원하는 병렬 모드에는 주로 다음이 포함됩니다.

- 전체 샤딩된 데이터 병렬(FSDP)

-하이브리드 샤딩 데이터 병렬(HSDP)

-텐서 병렬(TP)

- 파이프라인 병렬(PP)

- 시퀀스 병렬(SP)

-컨텍스트 병렬(CP)

PyTorch는 TorchTitan의 다양한 병렬 방법을 더욱 모듈화하여 개발자가 필요에 따라 N차원 병렬 처리를 자유롭게 결합하고 달성할 수 있기를 희망합니다.


이 문서에서는 전문적인 병렬 처리 및 라우팅 알고리즘 최적화와 같은 두 가지 새로운 아키텍처, MoE 및 다중 양식에 대한 지원을 추가해야 할 필요성을 구체적으로 언급합니다.

TorchTitan 자체의 업데이트 외에도 분산 팀은 대규모 분산 시나리오에 추가 성능 향상을 제공하기 위해 torch.compile 모듈과 더 잘 통합하기 위해 컴파일러 팀과 더욱 긴밀하게 협력해야 합니다.

미세 조정 및 추론

미세 조정: torchtune과 결합하여 FSDP2 LoRA/QLoRA 솔루션을 사용하고 모델 상태 사전의 NF4 양자화를 지원합니다.

추론: PP와 DP는 분산 API의 핵심이 되었습니다. 다음으로 대규모 모델 PP + 비동기 TP 방법을 지원하는 torchtitan의 분산 추론에 주목할 필요가 있습니다.

또한 문서에는 HuggingFace의 추론 API가 PiPPy에서 PyTorch로 마이그레이션될 것이라고 언급되어 있습니다(HuggingFace에서 완료).

토치튠、토치레크、토치비전

토치튠

torchtune의 출시는 사용자가 LLM을 보다 편리하게 미세 조정할 수 있도록 돕는 것을 목표로 하며 이는 Llama 모델 미세 조정을 위한 공식 솔루션이기도 합니다.

torchtune에서 정의한 "미세 조정"은 매우 광범위한 범위를 가지며, 이는 세 가지 유형의 시나리오로 요약될 수 있습니다.

- 도메인별 데이터 세트 또는 다운스트림 작업에 대한 모델 적응

- RLHF, DPO 등 보상 및 선호 모델링

- 증류 및 양자화를 포함한 훈련 과정

하반기 업데이트에서는 상담사 워크플로 미세 조정을 지원하는 동시에 미세 조정 성능 개선에 중점을 둘 예정입니다.

팀은 효율적인 미세 조정을 제공하고 PyTorch 생태계 내에서 대표적인 미세 조정 성능 벤치마크를 구축하기 위해 컴파일, 코어, 분산 및 기타 모듈과 협력할 것입니다.

Torchtune도 최신 오픈 소스 라이브러리이므로 오픈 소스 커뮤니티와의 상호 작용도 필수적입니다.

이 문서는 사용자 이해를 높이기 위해 블로그 기사 및 튜토리얼 게시, 기술 강의 개최 등을 제안하며 LLM 생태계에서 Torchturn의 기여도를 측정하기 위한 정량적 지표도 정의합니다.

오픈 소스 커뮤니티 외에도 torchune은 최소한 하나의 파트너와 통합하고 해당 커뮤니티에 참여하여 torchune 사용을 홍보할 것입니다.

토치비전

CV 분야에서 절대적으로 지배적인 플레이어인 TorchVision의 기술은 상대적으로 성숙되어 있으므로 로드맵에 제안된 업데이트가 거의 없습니다.

팀은 전처리 방향으로 계속 작업하고, 이미지 인코딩/디코딩 공간에서 더 많은 형식(예: WebP, HEIC) 및 플랫폼(예: CUDA)을 지원하고, JPEG 형식의 인코딩/디코딩 성능을 향상시킬 것입니다. GPU.

토치렉

TorchRec은 대규모 추천 시스템에서 일반적으로 사용되는 희소성 및 병렬성 기본 요소를 제공하는 것을 목표로 하며 첫 번째 안정 버전인 TorchRec 1.0이 가을에 출시될 예정입니다.

가장자리

현재 오픈 소스 라이브러리인 ExecuTorch는 주로 torch.compile 및 torch.export를 사용하여 모바일 장치 및 엣지 장치(예: AR/VR, 웨어러블 장치)에서 모델 분석, 디버깅 및 추론을 지원하는 알파 버전을 출시했습니다.

하반기에 Edge 팀은 xecuTorch 베타 버전을 출시하고 Meta의 Llama 시리즈 모델 및 기타 오픈 소스 모델을 위한 PyTorch 생태계 내 솔루션을 제공할 예정입니다.

주요 목표는 주로 두 가지 방향을 포괄합니다. 첫 번째는 다음을 포함하여 온디바이스 AI를 위한 기본 기능과 안정적인 인프라를 제공하는 것입니다.

- C++ 및 Python에 대한 API 안정성 보장

- 일련의 핵심 기능 구현: 지원 모델 압축, 프록시 캐시 위치 관리, 데이터 및 프로그램 분리

두 번째는 초기 코드 기반을 보호하고 오픈 소스 커뮤니티 내에서 영향력을 키우며 Arm, Apple, Qualcomm과 같은 회사와 좋은 협력 관계를 유지하는 것입니다.

커뮤니티 영향의 목표는 정량화되어 GitHub에서 3,000개의 별을 얻고 500번 복제(포크)되어야 하는 코드를 요구합니다. 관심 있는 독자들은 계속 관심을 갖고 팀이 연말까지 이 OKR을 완료할 수 있는지 확인할 수 있습니다.

데이터 로딩

Apache Arrow 형식을 기반으로 하는 HuggingFace 데이터 세트 라이브러리는 메모리 제한이 없는 고속 로딩/저장 기능으로 최근 몇 년간 갑자기 등장했으며, PyTorch 관련 기능의 각광을 훔친 것으로 보입니다.

데이터 로딩에 관한 문서는 TorchData 라이브러리를 다시 훌륭하게 만들고 데이터 로딩에서 PyTorch의 지배력을 다시 확립하려는 야망으로 시작됩니다.

이 목표를 달성하려면 관련 기능을 유연하고 확장 가능하며 고성능, 메모리 효율적으로 만드는 동시에 바보 같은 작동을 달성하고 다양한 규모의 다중 모드 훈련을 지원해야 합니다.

구체적인 업데이트 목표에는 다음과 같은 측면이 포함됩니다.

- DataLoader의 기능 개발 및 인터페이스는 GitHub의 원칙을 먼저 구현하며 DataPipes 및 DataLoader v2는 점차적으로 더 이상 사용되지 않고 삭제될 예정입니다.

- TorchTune, TorchTitan, HuggingFace 및 TorchData 간의 명확한 경계와 우수한 상호 운용성을 보장하고 다중 데이터 세트 및 다중 모드 데이터 로딩을 지원합니다.

- HuggingFace는 StatefulDataLoader의 API를 사용하여 호환성을 보장하고 샘플과 테스트 케이스를 적시에 업데이트합니다.

컴파일러 코어 및 배포

PyTorch 컴파일러의 핵심 기능은 수년간의 개발을 거쳐 점점 더 완벽해졌습니다. 현재 보완해야 할 것은 LLM 및 GenAI 분야의 더 깊은 통합과 더 많은 최적화 지원입니다.

로드맵에서는 LLM 및 GenAI 사용 주기(추론, 미세 조정, 사전 훈련)의 모든 측면에 torch.compile() 기능을 도입하여 출시 시 중요한 모델을 기본 PyTorch로 컴파일할 수 있도록 제안합니다.

이 목표를 달성하기 위해 문서에서는 토치튠(Torchtune) 및 TorchTitan 팀과 협력하여 컴파일 성능을 개선하고, 적어도 두 가지 주요 모델의 기본 PyTorch 컴파일 버전을 하반기에 출시하는 등 많은 구체적인 조치를 제안합니다.

또한 컴파일러는 비열심 훈련 모드에서 순방향 계산/역전파 프로세스를 표현하는 모델 그래프를 생성하기 위해 시각화 기능을 추가할 수 있습니다.

또한 시스템의 모니터링 및 관찰 가능성을 개선하고 사용자가 컴파일 문제를 스스로 디버깅할 수 있도록 돕는 등 사용자 지원을 위한 많은 계획이 있습니다. 주요 목표에는 여러 주요 영역(데이터 클래스, 컨텍스트 관리 등)에서 GitHub와 같은 플랫폼에서 개발자가 제기한 문제를 해결하기 위한 사용자 지원 팀을 구축하는 것도 포함됩니다.

참고자료:

https://dev-discuss.pytorch.org/t/메타-pytorch-팀-2024-h2-로드맵/2226

https://x.com/soumithchintala/status/1811060935211049046

https://www.assemblyai.com/blog/pytorch-vs-tensorflow-in-2023/