목차
OpenDiT 방법 소개
설치 및 사용
DiT 复现结果
기술 주변기기 일체 포함 Sora와 같은 모델을 훈련시키고 싶나요? You Yang 팀 OpenDiT, 80% 가속 달성

Sora와 같은 모델을 훈련시키고 싶나요? You Yang 팀 OpenDiT, 80% 가속 달성

Feb 29, 2024 pm 04:34 PM
ai 모델

2024년 초 소라의 놀라운 성과는 새로운 벤치마크가 되었으며, Wensheng 동영상을 연구하는 모든 사람들이 따라잡기 위해 달려가고 있습니다. 모든 연구자는 Sora의 결과를 복제하기를 열망하며 시간을 두고 연구합니다.

OpenAI가 공개한 기술 보고서에 따르면, 소라의 중요한 혁신 포인트는 시각적 데이터를 패치의 통일된 표현으로 변환하고, Transformer와 확산 모델의 결합을 통해 뛰어난 확장성을 입증하는 것입니다. 이번 보고서 발표와 함께 소라의 핵심 개발자인 윌리엄 피블스(William Peebles)와 뉴욕대학교 컴퓨터공학과 조교수 시에 사이닝(Xie Saining)이 공동 집필한 논문 'Scalable Diffusion Models with Transformers'가 연구자들로부터 많은 주목을 받았다. 연구 커뮤니티는 논문에서 제안된 DiT 아키텍처를 통해 Sora를 재현할 수 있는 실행 가능한 방법을 모색하기를 희망합니다.

최근 싱가포르 국립대학교 You Yang 팀이 오픈소스로 제공하는 OpenDiT라는 프로젝트가 DiT 모델 교육 및 배포에 대한 새로운 아이디어를 열었습니다.

OpenDiT는 DiT 애플리케이션의 훈련 및 추론 효율성을 향상시키기 위해 설계된 시스템입니다. 작동이 쉬울 뿐만 아니라 빠르고 메모리 효율성도 뛰어납니다. 이 시스템은 사용자에게 효율적이고 편리한 경험을 제공하는 것을 목표로 텍스트-비디오 생성 및 텍스트-이미지 생성과 같은 기능을 다룹니다.

Sora와 같은 모델을 훈련시키고 싶나요? You Yang 팀 OpenDiT, 80% 가속 달성

프로젝트 주소: https://github.com/NUS-HPC-AI-Lab/OpenDiT

Sora와 같은 모델을 훈련시키고 싶나요? You Yang 팀 OpenDiT, 80% 가속 달성

OpenDiT 방법 소개

OpenDiT는 Colossal-AI A에서 지원하는 Diffusion을 제공합니다. Transformer(DiT)의 고성능 구현. 훈련 중에 비디오 및 상태 정보는 각각 DiT 모델에 대한 입력으로 해당 인코더에 입력됩니다. 이후 확산 방식을 통해 학습 및 매개변수 업데이트를 수행하고, 마지막으로 업데이트된 매개변수를 EMA(Exponential Moving Average) 모델에 동기화합니다. 추론 단계에서는 EMA 모델을 직접 사용하여 조건 정보를 입력으로 사용하여 해당 결과를 생성합니다.

Sora와 같은 모델을 훈련시키고 싶나요? You Yang 팀 OpenDiT, 80% 가속 달성

이미지 출처: https://www.zhihu.com/people/berkeley-you-yang

OpenDiT는 ZeRO 병렬 전략을 사용하여 DiT 모델 매개변수를 여러 시스템에 배포합니다. 압력. 성능과 정확성 사이의 더 나은 균형을 달성하기 위해 OpenDiT는 혼합 정밀도 교육 전략도 채택합니다. 특히 모델 매개변수와 최적화 프로그램은 정확한 업데이트를 보장하기 위해 float32를 사용하여 저장됩니다. 모델 계산 과정에서 연구팀은 모델 정확도를 유지하면서 계산 속도를 높이기 위해 DiT 모델에 대해 float16과 float32의 혼합 정밀도 방법을 설계했습니다.

DiT 모델에 사용되는 EMA 방법은 모델 매개변수 업데이트를 원활하게 하기 위한 전략으로, 모델의 안정성과 일반화 능력을 효과적으로 향상시킬 수 있습니다. 그러나 매개변수의 추가 복사본이 생성되므로 비디오 메모리에 대한 부담이 늘어납니다. 비디오 메모리의 이 부분을 더욱 줄이기 위해 연구팀은 EMA 모델을 조각화하여 다른 GPU에 저장했습니다. 훈련 과정에서 각 GPU는 EMA 모델 매개변수의 자체 부분만 계산하고 저장하면 되며 동기 업데이트를 위해 각 단계 후에 ZeRO가 업데이트를 완료할 때까지 기다려야 합니다.

FastSeq

DiT와 같은 시각적 생성 모델 분야에서 시퀀스 병렬화는 효율적인 긴 시퀀스 훈련과 짧은 지연 시간 추론을 위해 필수적입니다.

그러나 DeepSpeed-Ulysses, Megatron-LM Sequence Parallelism 등과 같은 기존 방법은 이러한 작업에 적용할 때 한계에 직면합니다. 즉, 너무 많은 시퀀스 통신을 도입하거나 소규모 시퀀스 병렬 처리 효율성을 처리할 때 부족합니다.

이를 위해 연구팀은 대규모 시퀀스와 소규모 병렬 처리에 적합한 새로운 유형의 시퀀스 병렬 처리인 FastSeq을 제안했습니다. FastSeq는 변환기 레이어당 두 개의 통신 연산자만 사용하여 시퀀스 통신을 최소화하고, AllGather를 활용하여 통신 효율성을 향상시키며, 전략적으로 비동기 링을 사용하여 AllGather 통신과 qkv 계산을 겹쳐 성능을 더욱 최적화합니다.

Sora와 같은 모델을 훈련시키고 싶나요? You Yang 팀 OpenDiT, 80% 가속 달성

Sora와 같은 모델을 훈련시키고 싶나요? You Yang 팀 OpenDiT, 80% 가속 달성

운영자 최적화

adaLN 모듈은 조건부 정보를 시각적 콘텐츠에 통합하기 위해 DiT 모델에 도입되었습니다. 이 작업은 모델 성능을 향상시키는 데 중요하지만 많은 요소별 작업을 수행하며 자주 호출됩니다. 전체 계산 효율성을 감소시키는 모델입니다. 연구팀은 이러한 문제를 해결하기 위해 여러 작업을 하나로 병합하여 컴퓨팅 효율성을 높이고 시각적 정보의 I/O 소비를 줄이는 효율적인 Fused adaLN 커널을 제안했습니다.

Sora와 같은 모델을 훈련시키고 싶나요? You Yang 팀 OpenDiT, 80% 가속 달성

이미지 출처: https://www.zhihu.com/people/berkeley-you-yang

간단히 말하면 OpenDiT는 다음과 같은 성능 이점을 가지고 있습니다.

1. GPU 최대 80% 가속, 50% 메모리 절약

  • DiT용으로 설계된 Fused AdaLN은 물론 FlashAttention, Fused Layernorm 및 HybridAdam을 포함한 효율적인 연산자를 설계했습니다.
  • ZeRO, Gemini 및 DDP를 포함한 하이브리드 병렬 접근 방식을 사용합니다. ema 모델을 샤딩하면 메모리 비용도 더욱 절감됩니다.

2. FastSeq: 새로운 시퀀스 병렬 접근 방식

  • 은 일반적으로 시퀀스가 ​​길지만 매개변수가 LLM보다 작은 DiT와 유사한 워크로드를 위해 설계되었습니다.
  • 노드 내 시퀀스 병렬화는 통신량을 최대 48%까지 절약할 수 있습니다.
  • 단일 GPU의 메모리 한계를 극복하고 전반적인 훈련 및 추론 시간을 줄입니다.

3. 사용하기 쉽습니다.

  • 단 몇 줄의 코드 수정만으로 엄청난 성능 향상을 얻을 수 있습니다.
  • 사용자는 분산 교육이 어떻게 구현되는지 이해할 필요가 없습니다.

4. 텍스트-이미지 및 텍스트-비디오 생성 완료 파이프라인

  • 연구원과 엔지니어는 병렬 부분을 수정하지 않고도 OpenDiT 파이프라인을 쉽게 사용하고 실제 애플리케이션에 적용할 수 있습니다.
  • 연구팀은 ImageNet에서 텍스트-이미지 훈련을 진행하여 OpenDiT의 정확성을 검증하고 체크포인트를 공개했습니다.

설치 및 사용

OpenDiT를 사용하려면 먼저 필수 구성 요소를 설치해야 합니다:

  • Python >= 3.10
  • PyTorch >= 1.13 ( >2를 사용하는 것이 좋습니다. 0 version)
cuda & gt; = 11.6

anaconda (python & gt; = 3.10)를 사용하여 새로운 환경을 만들어 예제를 실행하는 것이 좋습니다.

conda create -n opendit pythnotallow=3.10 -yconda activate opendit
로그인 후 복사
OpenDiT 설치: ​​

git clone https://github.com/hpcaitech/ColossalAI.gitcd ColossalAIgit checkout adae123df3badfb15d044bd416f0cf29f250bc86pip install -e .
로그인 후 복사
(선택 사항이지만 권장됨) 학습 및 추론 속도를 높이기 위해 라이브러리 설치:

git clone https://github.com/oahzxl/OpenDiTcd OpenDiTpip install -e .
로그인 후 복사
이미지 생성

훈련할 수 있습니다 다음 명령을 실행하여 DiT 모델을 생성합니다.

# Install Triton for fused adaln kernelpip install triton# Install FlashAttentionpip install flash-attn# Install apex for fused layernorm kernelgit clone https://github.com/NVIDIA/apex.gitcd apexgit checkout 741bdf50825a97664db08574981962d66436d16apip install -v --disable-pip-version-check --no-cache-dir --no-build-isolation --config-settings "--build-optinotallow=--cpp_ext" --config-settings "--build-optinotallow=--cuda_ext" ./--global-optinotallow="--cuda_ext" --global-optinotallow="--cpp_ext"
로그인 후 복사
모든 가속 방법은 기본적으로 비활성화되어 있습니다. 훈련 과정의 일부 주요 요소에 대한 세부 정보는 다음과 같습니다.

플러그인: ColossalAI, zero2 및 ddp에서 사용하는 부스터 플러그인을 지원합니다. 기본값은 zero2이며 zero2를 활성화하는 것이 좋습니다.

  • mixed_precision: 혼합 정밀도 훈련의 데이터 유형, 기본값은 fp16입니다.
  • grad_checkpoint: 그래디언트 체크포인트 활성화 여부. 이렇게 하면 훈련 과정의 메모리 비용이 절약됩니다. 기본값은 거짓입니다. 메모리가 충분하다면 비활성화하는 것이 좋습니다.
  • enable_modulate_kernel: 훈련 프로세스 속도를 높이기 위해 변조 커널 최적화를 활성화할지 여부입니다. 기본값은 False이며 GPU
  • enable_layernorm_kernel: 학습 프로세스 속도를 높이기 위해 layernorm 커널 최적화를 활성화할지 여부입니다. 기본값은 False이며 활성화하는 것이 좋습니다.
  • enable_flashattn: 교육 프로세스 속도를 높이기 위해 FlashAttention을 활성화할지 여부입니다. 기본값은 False이며 활성화하는 것이 좋습니다.
  • sequence_parallel_size: 시퀀스 병렬 처리 크기. 값을 1보다 크게 설정하면 시퀀스 병렬성이 활성화됩니다. 기본값은 1이며, 메모리가 충분하면 비활성화하는 것이 좋습니다.
  • 추론에 DiT 모델을 사용하려면 다음 코드를 실행해야 합니다. 체크포인트 경로를 자체 학습된 모델로 바꿔야 합니다.

# Use scriptbash train_img.sh# Use command linetorchrun --standalone --nproc_per_node=2 train.py \--model DiT-XL/2 \--batch_size 2
로그인 후 복사

视频生成

你可以通过执行以下命令来训练视频 DiT 模型:

# train with sciptbash train_video.sh# train with command linetorchrun --standalone --nproc_per_node=2 train.py \--model vDiT-XL/222 \--use_video \--data_path ./videos/demo.csv \--batch_size 1 \--num_frames 16 \--image_size 256 \--frame_interval 3# preprocess# our code read video from csv as the demo shows# we provide a code to transfer ucf101 to csv formatpython preprocess.py
로그인 후 복사

使用 DiT 模型执行视频推理的代码如下所示:

# Use scriptbash sample_video.sh# Use command linepython sample.py \--model vDiT-XL/222 \--use_video \--ckpt ckpt_path \--num_frames 16 \--image_size 256 \--frame_interval 3
로그인 후 복사

DiT 复现结果

为了验证 OpenDiT 的准确性,研究团队使用 OpenDiT 的 origin 方法对 DiT 进行了训练,在 ImageNet 上从头开始训练模型,在 8xA100 上执行 80k step。以下是经过训练的 DiT 生成的一些结果:

Sora와 같은 모델을 훈련시키고 싶나요? You Yang 팀 OpenDiT, 80% 가속 달성

损失也与 DiT 论文中列出的结果一致:

Sora와 같은 모델을 훈련시키고 싶나요? You Yang 팀 OpenDiT, 80% 가속 달성

要复现上述结果,需要更改 train_img.py 中的数据集并执行以下命令:

torchrun --standalone --nproc_per_node=8 train.py \--model DiT-XL/2 \--batch_size 180 \--enable_layernorm_kernel \--enable_flashattn \--mixed_precision fp16
로그인 후 복사

感兴趣的读者可以查看项目主页,了解更多研究内容。

위 내용은 Sora와 같은 모델을 훈련시키고 싶나요? You Yang 팀 OpenDiT, 80% 가속 달성의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.

핫 AI 도구

Undresser.AI Undress

Undresser.AI Undress

사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover

AI Clothes Remover

사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool

Undress AI Tool

무료로 이미지를 벗다

Clothoff.io

Clothoff.io

AI 옷 제거제

AI Hentai Generator

AI Hentai Generator

AI Hentai를 무료로 생성하십시오.

인기 기사

R.E.P.O. 에너지 결정과 그들이하는 일 (노란색 크리스탈)
3 몇 주 전 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. 최고의 그래픽 설정
3 몇 주 전 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. 아무도들을 수없는 경우 오디오를 수정하는 방법
3 몇 주 전 By 尊渡假赌尊渡假赌尊渡假赌
WWE 2K25 : Myrise에서 모든 것을 잠금 해제하는 방법
4 몇 주 전 By 尊渡假赌尊渡假赌尊渡假赌

뜨거운 도구

메모장++7.3.1

메모장++7.3.1

사용하기 쉬운 무료 코드 편집기

SublimeText3 중국어 버전

SublimeText3 중국어 버전

중국어 버전, 사용하기 매우 쉽습니다.

스튜디오 13.0.1 보내기

스튜디오 13.0.1 보내기

강력한 PHP 통합 개발 환경

드림위버 CS6

드림위버 CS6

시각적 웹 개발 도구

SublimeText3 Mac 버전

SublimeText3 Mac 버전

신 수준의 코드 편집 소프트웨어(SublimeText3)

Laravel 's geospatial : 대화식지도의 최적화 및 많은 양의 데이터 Laravel 's geospatial : 대화식지도의 최적화 및 많은 양의 데이터 Apr 08, 2025 pm 12:24 PM

7 백만 레코드를 효율적으로 처리하고 지리 공간 기술로 대화식지도를 만듭니다. 이 기사는 Laravel과 MySQL을 사용하여 7 백만 개 이상의 레코드를 효율적으로 처리하고 대화식지도 시각화로 변환하는 방법을 살펴 봅니다. 초기 챌린지 프로젝트 요구 사항 : MySQL 데이터베이스에서 7 백만 레코드를 사용하여 귀중한 통찰력을 추출합니다. 많은 사람들이 먼저 프로그래밍 언어를 고려하지만 데이터베이스 자체를 무시합니다. 요구 사항을 충족시킬 수 있습니까? 데이터 마이그레이션 또는 구조 조정이 필요합니까? MySQL이 큰 데이터로드를 견딜 수 있습니까? 예비 분석 : 주요 필터 및 속성을 식별해야합니다. 분석 후, 몇 가지 속성만이 솔루션과 관련이 있음이 밝혀졌습니다. 필터의 타당성을 확인하고 검색을 최적화하기위한 제한 사항을 설정했습니다. 도시를 기반으로 한지도 검색

MySQL을 해결하는 방법을 시작할 수 없습니다 MySQL을 해결하는 방법을 시작할 수 없습니다 Apr 08, 2025 pm 02:21 PM

MySQL 시작이 실패하는 데는 여러 가지 이유가 있으며 오류 로그를 확인하여 진단 할 수 있습니다. 일반적인 원인에는 포트 충돌 (포트 점유 체크 및 구성 수정), 권한 문제 (서비스 실행 사용자 권한 실행), 구성 파일 오류 (파라미터 설정 확인), 데이터 디렉토리 손상 (데이터 복원 또는 테이블 공간 재건), IBDATA 테이블 공간 문제 (IBDATA1 파일 확인), 플러그로드 (확인 오류 로그)가 포함됩니다. 문제를 해결할 때 오류 로그를 기반으로 문제를 분석하고 문제의 근본 원인을 찾고 문제를 방지하고 해결하기 위해 정기적으로 데이터를 백업하는 습관을 개발해야합니다.

설치 후 MySQL을 사용하는 방법 설치 후 MySQL을 사용하는 방법 Apr 08, 2025 am 11:48 AM

이 기사는 MySQL 데이터베이스의 작동을 소개합니다. 먼저 MySQLworkBench 또는 명령 줄 클라이언트와 같은 MySQL 클라이언트를 설치해야합니다. 1. MySQL-Uroot-P 명령을 사용하여 서버에 연결하고 루트 계정 암호로 로그인하십시오. 2. CreateABase를 사용하여 데이터베이스를 작성하고 데이터베이스를 선택하십시오. 3. CreateTable을 사용하여 테이블을 만들고 필드 및 데이터 유형을 정의하십시오. 4. InsertInto를 사용하여 데이터를 삽입하고 데이터를 쿼리하고 업데이트를 통해 데이터를 업데이트하고 DELETE를 통해 데이터를 삭제하십시오. 이러한 단계를 마스터하고 일반적인 문제를 처리하는 법을 배우고 데이터베이스 성능을 최적화하면 MySQL을 효율적으로 사용할 수 있습니다.

산성 특성 이해 : 신뢰할 수있는 데이터베이스의 기둥 산성 특성 이해 : 신뢰할 수있는 데이터베이스의 기둥 Apr 08, 2025 pm 06:33 PM

데이터베이스 산 속성에 대한 자세한 설명 산 속성은 데이터베이스 트랜잭션의 신뢰성과 일관성을 보장하기위한 일련의 규칙입니다. 데이터베이스 시스템이 트랜잭션을 처리하는 방법을 정의하고 시스템 충돌, 전원 중단 또는 여러 사용자의 동시 액세스가 발생할 경우에도 데이터 무결성 및 정확성을 보장합니다. 산 속성 개요 원자력 : 트랜잭션은 불가분의 단위로 간주됩니다. 모든 부분이 실패하고 전체 트랜잭션이 롤백되며 데이터베이스는 변경 사항을 유지하지 않습니다. 예를 들어, 은행 송금이 한 계정에서 공제되지만 다른 계정으로 인상되지 않은 경우 전체 작업이 취소됩니다. BeginTransaction; updateAccountssetBalance = Balance-100WH

다운로드 후 MySQL을 설치할 수 없습니다 다운로드 후 MySQL을 설치할 수 없습니다 Apr 08, 2025 am 11:24 AM

MySQL 설치 실패의 주된 이유는 다음과 같습니다. 1. 권한 문제, 관리자로 실행하거나 Sudo 명령을 사용해야합니다. 2. 종속성이 누락되었으며 관련 개발 패키지를 설치해야합니다. 3. 포트 충돌, 포트 3306을 차지하는 프로그램을 닫거나 구성 파일을 수정해야합니다. 4. 설치 패키지가 손상되어 무결성을 다운로드하여 확인해야합니다. 5. 환경 변수가 잘못 구성되었으며 운영 체제에 따라 환경 변수를 올바르게 구성해야합니다. 이러한 문제를 해결하고 각 단계를 신중하게 확인하여 MySQL을 성공적으로 설치하십시오.

원격 선임 백엔드 엔지니어 (플랫폼)에는 원이 필요합니다 원격 선임 백엔드 엔지니어 (플랫폼)에는 원이 필요합니다 Apr 08, 2025 pm 12:27 PM

원격 선임 백엔드 엔지니어 구직 회사 : 원 위치 : 원격 사무실 직무 유형 : 전임 급여 : $ 130,000- $ 140,000 직무 설명 전체 소프트웨어 개발 라이프 사이클을 다루는 Circle Mobile 애플리케이션 및 공개 API 관련 기능의 연구 및 개발에 참여합니다. 주요 책임은 독립적으로 Rubyonrails를 기반으로 개발 작업을 완료하고 React/Redux/Relay 프론트 엔드 팀과 협력합니다. 웹 애플리케이션의 핵심 기능 및 개선을 구축하고 기능 설계 프로세스 전반에 걸쳐 설계자 및 리더십과 긴밀히 협력하십시오. 긍정적 인 개발 프로세스를 촉진하고 반복 속도를 우선시하십시오. 6 년 이상의 복잡한 웹 애플리케이션 백엔드가 필요합니다.

MySQL이 JSON을 반환 할 수 있습니다 MySQL이 JSON을 반환 할 수 있습니다 Apr 08, 2025 pm 03:09 PM

MySQL은 JSON 데이터를 반환 할 수 있습니다. json_extract 함수는 필드 값을 추출합니다. 복잡한 쿼리의 경우 where 절을 사용하여 JSON 데이터를 필터링하지만 성능 영향에주의하십시오. JSON에 대한 MySQL의 지원은 지속적으로 증가하고 있으며 최신 버전 및 기능에주의를 기울이는 것이 좋습니다.

Bangla 부분 모델 검색의 Laravel Eloquent Orm) Bangla 부분 모델 검색의 Laravel Eloquent Orm) Apr 08, 2025 pm 02:06 PM

Laraveleloquent 모델 검색 : 데이터베이스 데이터를 쉽게 얻을 수 있습니다. 이 기사는 데이터베이스에서 데이터를 효율적으로 얻는 데 도움이되는 다양한 웅변 모델 검색 기술을 자세히 소개합니다. 1. 모든 기록을 얻으십시오. 모든 () 메소드를 사용하여 데이터베이스 테이블에서 모든 레코드를 가져옵니다. 이것은 컬렉션을 반환합니다. Foreach 루프 또는 기타 수집 방법을 사용하여 데이터에 액세스 할 수 있습니다 : Foreach ($ postas $ post) {echo $ post->

See all articles