소식

플라잉 패들 프레임워크 고급 3.0!기사에서는 "통합 대형 모델 학습 및 푸시"를 포함한 5가지 새로운 기능을 설명합니다.

2024-08-01

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

기본 소프트웨어로서 딥러닝 프레임워크는 딥러닝 기술의 급속한 발전을 촉진할 뿐만 아니라 인공지능 기술의 광범위한 적용을 위한 견고한 기반을 마련합니다.

딥 러닝 프레임워크는 개발자에게 데이터와 작업을 고도로 추상화하는 편리하고 사용하기 쉬운 개발 인터페이스를 제공하므로 개발자는 기본 데이터 처리의 세부 사항에 얽매일 필요 없이 알고리즘과 모델 설계에 더 집중할 수 있습니다. 이러한 인터페이스를 통해 개발자는 복잡한 기본 하드웨어 개발 세부 사항을 직접 인식하고 처리할 필요가 없으므로 개발 효율성과 경험이 크게 향상됩니다. 둘째, 딥러닝 프레임워크는 자동 차별화라는 강력한 기능도 제공합니다. 개발자는 일반적으로 순방향 전파 네트워크의 코드만 작성하면 되는 반면, 번거로운 역전파 네트워크는 프레임워크에 의해 자동으로 완료됩니다.

중국 최초의 자체 개발하고 기능이 풍부한 오픈 소스 및 개방형 딥 러닝 플랫폼인 Fei Paddle은 기본적으로 정적 이미지를 사용하는 버전 1.0에서 기본적으로 동적 이미지를 사용하고 통합을 실현할 수 있는 버전 2.0으로 출시되었습니다. Fei Paddle Framework는 동적 및 정적 이미지와 학습 및 푸시 기능을 제공하며 동적 그래픽의 유연성과 정적 그래픽의 효율성을 완벽하게 통합했으며 최근 버전 3.0에 맞게 개선된 모델의 하이브리드 병렬 학습을 지원합니다. 대형모델 시대, 정식 출시! Flying Paddle은 공식적으로 차세대 프레임 기술 혁신을 열었습니다!

디자인적 사고

딥러닝 프레임워크의 설계는 인공지능 기술 발전을 촉진하는 데 매우 중요하며, 핵심 설계 목표는 딥러닝 기술의 혁신과 적용을 더 쉽게 만드는 것입니다.

어떻게 해야 하나요?

프레임워크는 개발자와 하드웨어 제조업체의 요구 사항을 완전히 고려해야 합니다.

사용자 관점에서 볼 때 우수한 딥러닝 프레임워크는 개발자에게 최고의 개발 경험을 제공해야 합니다. 이는 사용자 친화적인 개발 환경을 제공한다는 의미일 뿐만 아니라, 더 중요한 것은 개발자의 학습 비용과 시간 비용을 획기적으로 줄이는 동시에 개발 편의성을 획기적으로 향상시킬 수 있어야 한다는 것입니다. 이를 위해 Flying Paddle Framework는 "움직임과 정적의 통합, 훈련과 푸시의 통합, 자동 병렬화"라는 개념을 제시하여 개발 효율성을 크게 향상시킵니다.

하드웨어 적응의 관점에서 볼 때 최신 딥 러닝 애플리케이션은 다양한 하드웨어 플랫폼에서 실행되어야 하는 경우가 많습니다. 따라서 프레임워크는 다양한 하드웨어 장치와 호환되고 적응 가능해야 합니다. 이를 위해서는 다양한 하드웨어 인터페이스 간의 차이점을 지능적으로 격리하고 광범위한 하드웨어 적응성을 달성하는 프레임워크가 필요합니다. 동시에 하드웨어 성능을 최대한 활용하려면 프레임워크에는 소프트웨어와 하드웨어가 함께 작동하여 하드웨어 리소스를 활용할 때 최적의 성능을 보장하는 기능도 있어야 합니다.

동시에 좋은 프레임워크는 AI 기술 개발의 전반적인 추세와 업계의 실제 애플리케이션 요구 사항도 고려해야 합니다.

기술 개발 측면에서 LLM(Large Language Model), MOE(Mixture of Experts), 다중 양식, 과학 지능(AI for Science)과 같은 첨단 기술이 점차 새로운 연구 핫스팟이 되었습니다. 모델의 복잡성이 증가함에 따라 컴퓨팅 병목 현상, 스토리지 병목 현상, 메모리 액세스 병목 현상, 통신 병목 현상 등의 문제가 점차 두드러지고 분산 교육 및 일반적인 성능 최적화의 필요성이 점점 더 시급해집니다.

산업화 수준에서 프레임워크는 훈련, 압축 및 추론의 통합을 지원하는 전체 프로세스 기능을 갖추어야 합니다. 이는 모델 훈련부터 최적화, 실제 배포 및 추론에 이르기까지 프레임워크가 딥 러닝 기술에 대한 업계의 실제 요구 사항을 충족하는 완전하고 효율적인 솔루션을 제공해야 함을 의미합니다.

트렌드를 따라가고 세련미를 견딜 수 있는 프레임워크만이 업계, 학계, 연구 분야의 각계각층의 개발자에게 지속적이고 안정적인 지원을 제공할 수 있습니다.


Flying Paddle Frame 3.0의 디자인 컨셉과 주요 특징

위의 요구 사항을 요약하면 Fei Paddle은 개발자에게 "동적 및 정적 통합, 훈련 및 푸시 통합, 자동 병렬화, 자동 최적화 및 광범위한 하드웨어 적응"을 통합하는 딥 러닝 프레임워크를 제공할 것입니다. -복잡한 통신 및 스케줄링 논리가 필요 없는 단독 코드로 복잡한 연산자 커널 코드를 작성하기 위해 하드웨어 개발 언어를 사용하지 않고도 수학 공식을 작성하는 것처럼 Python으로 신경망을 작성할 수 있습니다. 효율적인 운영을 이룰 수 있습니다.

Flying Paddle Framework 버전 3.0이 출시되어 동적 및 정적 통합, 교육 및 푸시 통합이라는 2.x 버전의 설계 개념을 이어가고 있으며, 개발 인터페이스는 2.x 버전과 완벽하게 호환됩니다. 이는 버전 2.x를 사용하여 개발된 코드가 대부분의 경우 수정 없이 버전 3.0에서 직접 실행될 수 있음을 의미합니다. 이는 동적 및 정적 통합 자동 병렬화, 컴파일러 자동 최적화, 대규모 모델 훈련 및 푸시 통합, 대규모 모델 다중 하드웨어 적응이라는 네 가지 새로운 기능을 출시하는 데 중점을 둡니다. 이러한 기능은 Flying Paddle Framework 버전 2.6 이하부터 개발되어 현재 외부 시험 사용 단계에 이르렀습니다. 이러한 새로운 기능은 사용자 경험, 성능, 2차 개발 편의성 및 하드웨어 적응성 측면에서 상당한 개선을 가져왔습니다. Fei Paddle은 공식적으로 버전 3.0을 출시했습니다. 이 버전은 프레임워크 2.x 버전의 일부 기존 기능에 대한 개선 사항을 포함하고 있으며 새로운 기능을 사용하지 않고도 성숙하고 안정적입니다.

프레임워크 아키텍처 개요

위에서 언급한 딥러닝 프레임워크의 특성을 실현하려면 프레임워크의 아키텍처가 다양하고 복잡한 모델 구성을 지원하고 다양한 칩과 원활하게 통합될 수 있도록 신중하게 설계되어야 합니다. 다음으로, 직관적인 아키텍처 다이어그램을 사용하여 차세대 Flying Paddle 프레임워크에서 다루는 기능 모듈과 이러한 모듈 간의 상호 작용 및 연결을 자세히 보여줍니다. 다음은 Flying Paddle Framework 3.0의 아키텍처 다이어그램입니다.


Flying Paddle Framework 3.0 아키텍처 다이어그램

풍부한 인터페이스: Flying Paddle Framework는 텐서 표현, 수학적 계산, 모델 네트워킹, 최적화 전략 등과 같은 딥 러닝과 관련된 다양한 개발 인터페이스를 제공합니다. 이러한 인터페이스를 통해 개발자는 기본 기술 세부 사항을 다루지 않고도 자신만의 딥 러닝 모델을 쉽게 구축하고 훈련할 수 있습니다.

개발 인터페이스에서 Flying Paddle Framework는 프리젠테이션 계층, 스케줄링 계층, 운영자 계층 및 적응 계층의 네 가지 수준으로 나눌 수 있습니다.

프리젠테이션 레이어: 계산 그래프의 표현 및 변환에 중점을 두고, 확장성이 뛰어난 중간 표현 PIR을 통해 동적에서 정적(동적 그래프에서 정적 그래프로), 자동 미분, 자동 병렬성, 연산자 조합, 계산 그래프 최적화 등의 핵심 기능을 제공합니다. 견고한 지원.

스케줄링 레이어: 코드 또는 계산 그래프의 지능형 오케스트레이션 및 효율적인 스케줄링을 담당하고, 실제 필요에 따라 그래픽 메모리 및 메모리를 관리 및 최적화하는 기능을 담당하며 동적 그래프 및 정적 그래프의 효율적인 실행을 지원합니다. 개발자가 모델 개발을 위해 동적 그래픽을 사용하든 정적 그래픽을 사용하든 상관없이 Flying Paddle Framework는 최적의 리소스 활용을 보장하면서 효율적인 실행 환경을 제공할 수 있습니다.

연산자 계층: 신경망 컴파일러 CINN과 연산자 라이브러리 PHI로 구성되며 텐서 정의, 연산자 정의, 자동 연산자 융합 및 연산자 커널 구현과 같은 주요 기능을 다룹니다.

적응 계층: 장치 관리, 운영자 적응, 통신 적응 및 컴파일 액세스와 같은 기능을 포함하여 기본 칩에 대한 적응을 구현하는 데 사용됩니다.

다음은 Flying Paddle 3.0 버전 아키텍처의 새로운 주요 업그레이드에 중점을 둡니다. 이 업그레이드에는 주로 다음 모듈이 포함됩니다.

1) 확장성이 뛰어난 중간 표현 PIR은 전체 아키텍처에 대한 통합된 중간 표현을 생성함으로써 프레임워크 계층에서 각 모듈의 장벽을 무너뜨리고 과학 컴퓨팅, 컴파일 최적화 및 대형 모델 분야에서 Flying Paddle의 잠재력을 향상시킵니다. ;

2) 신경망 컴파일러는 자동 융합 및 정책 조정을 통해 모델의 엔드투엔드 성능을 자동으로 최적화하고 크게 향상시킵니다.

3) 자동 병렬화는 모델 개발 비용과 대형 모델 장면의 성능 최적화 비용을 절감하고 대형 모델 장면의 사용자 경험을 크게 향상시킵니다.

고도로 확장된 중간 표현 PIR

계산 그래프의 중간 표현(IR)은 딥 러닝 프레임워크 성능 최적화, 추론 배포, 컴파일러 및 기타 방향의 중요한 초석입니다. 최근에는 딥러닝을 위한 신경망 모델 최적화에 컴파일러 기술을 도입하는 프레임워크와 연구자가 늘어나고 있으며, 이를 기반으로 신경망 생성을 자동으로 최적화하고 코딩하기 위해 컴파일러 개념, 기술 및 도구를 사용하고 있습니다. 대형 모델 시대에는 유연성, 확장성, 완성도 측면에서 IR에 대한 요구 사항이 더욱 높아집니다.

따라서 버전 3.0에서 Feipiao는 인프라 수준에서 중간 표현 IR의 정의를 표준화하여 전체 아키텍처의 통합 표현을 달성하고 업스트림과 다운스트림 모든 방향에서 개발 결과를 공유합니다. Feipiao의 차세대 IR 아키텍처는 높은 유연성과 높은 확장성의 두 가지 중요한 차원에 중점을 두고 있습니다. 이는 보다 완전하고 강력한 의미 표현 기능, 전체 아키텍처의 통합 표현 및 효율적인 플러그형 성능 최적화 전략(Pass) 메커니즘을 통해 개발되어 복잡한 의미를 달성합니다. 지원하고, 대형 모델의 자동 병렬화 하에서 풍부한 분할 전략을 보다 편리하게 지원하고, 신경망 컴파일러와 원활하게 연결하여 자동 성능 최적화 및 다중 하드웨어 적응을 달성합니다.



PIR(Paddle Intermediate Representation)은 Type, Attribute, Op, Trait 및 Interface를 포함하는 확장성이 뛰어난 기본 구성 요소 집합을 하단에 추상화하고 Dialect의 개념을 도입하여 개발자가 유연하게 확장하고 자유롭게 맞춤 설정할 수 있는 기능을 제공하므로 포괄적인 기능을 제공합니다. 강력한 의미 표현 기능. 모델 표현 계층에서는 다중 방언의 모듈식 관리와 통합된 다중 터미널 표현을 통해 훈련과 추론을 통합한 전체 아키텍처의 통합 표현이 달성되고, 연산자와 컴파일러 간의 원활한 연결이 달성되며, 자동 최적화 및 다중 하드웨어 적응이 이루어집니다. 지원됩니다. 그래프 변환 계층에서는 기본 모듈을 통합하고 기본 개념을 단순화함으로써 사용자에게 저렴하고 사용하기 쉬운 고성능 개발 경험과 풍부하고 플러그 가능한 패스 최적화 메커니즘을 제공합니다. Flying Paddle PIR은 SSA(정적 단일 할당) 원칙을 준수하여 모델이 방향성 비순환 그래프와 동일하도록 하고 Value 및 Operation을 사용하여 계산 그래프를 추상화합니다. 여기서 Operation은 노드를 나타내고 Value는 에지를 나타냅니다.

작업은 계산 그래프의 노드를 나타냅니다. 각 작업은 연산자를 나타내며 0개 이상의 지역을 포함합니다. 지역은 0개 이상의 블록을 포함할 수 있는 클로저를 나타냅니다. 블록은 SSA(정적 단일 할당) 원칙을 준수하고 0개 이상의 작업을 포함하는 기본 블록을 나타냅니다. 이 세 가지 사이의 루프 중첩을 통해 임의로 복잡한 문법 구조를 구성할 수 있습니다.

값은 계산 그래프에서 방향이 지정된 에지를 나타냅니다. 이는 두 작업을 연결하는 데 사용되므로 프로그램에서 Use-Define 체인(예: UD 체인)을 설명합니다. 그 중 OpResult는 정의 끝 역할을 하며 Value를 정의하는 데 사용되며 OpOperand는 사용 끝 역할을 하며 특정 Value의 사용법을 설명합니다.

Feipiao는 맞춤화 유연성과 개발 용이성을 고려한 PatternRewriter와 Declarative Rewrite Rule(줄여서 DRR)이라는 두 가지 패스 개발 메커니즘을 제공합니다. 3단계 Pass 개발 방법을 사용하면 개발자는 기본 IR의 세부 사항에 주의를 기울이지 않고 Pass 로직 처리에 더 집중할 수 있습니다. PIR의 패스 개발 메커니즘을 사용하면 추론 시나리오에 적용할 때 패스 개발 비용이 58% 감소하고 모델 추론의 84% 이상이 10% 이상 가속화됩니다.

신경망 컴파일러 자동 최적화

컴파일러 기술을 개발해야 하는 세 가지 이유는 다음과 같습니다.

1) 하드웨어 개발 동향: 하드웨어 개발의 역사와 기술 진화 특성을 결합하여 컴퓨팅 성능의 개발 속도는 메모리 액세스 성능보다 훨씬 빠르며, CPU 성능 및 버스 메모리 액세스 성능은 메모리 액세스 집약적 운영자의 성능에 영향을 미칩니다. 표준 클래스, 활성화 등), CPU 성능 및 버스 대역폭은 스케줄링, 성능에 영향을 미칩니다. 컴파일러 기반 자동 융합 일반 최적화 기술은 여러 연산자를 하나의 대규모 연산자로 융합할 수 있으며, 메모리 액세스 양과 연산자 수를 줄여 모델 성능을 크게 향상시킬 수 있습니다.

2) 모델 개발 동향: 모델 구조는 다양성의 특성을 가지며, 다양성에 대한 요구는 컴파일러의 일반적인 최적화에 크게 의존합니다.

3) 다중 하드웨어 최적화: 시장에는 다양한 종류의 하드웨어가 있으며, 각 하드웨어는 최적화를 위해 많은 인력을 필요로 합니다. 비용이 크게 절감됩니다.

예를 통해 이를 설명하겠습니다. Llama 모델에서 자주 사용되는 RMS Normalization(Root Mean Square Layer Normalization)을 예로 들어 보겠습니다. 계산 공식은 비교적 간단하고 명확합니다.



RMS 정규화 계산을 구현해야 한다고 가정해 보겠습니다. 가장 간단한 방법은 플라잉 패들 프레임워크에서 제공하는 텐서 연산 개발 인터페이스를 사용하여 제곱, 합, 나눗셈, 루트 등의 연산을 완료하는 것입니다. 코드는 다음과 같습니다:



위 코드는 개발이 간단하지만 성능이 좋지 않고 비디오 메모리를 많이 차지하므로 개발자가 FusedRMSNorm을 구현할 수 있지만 개발자의 요구 사항이 더 높고 비용도 더 높습니다.

신경망 컴파일러 기술을 사용하면 높은 수준의 유연성과 사용 편의성을 유지하면서 성능을 크게 향상시킬 수 있습니다. A100 플랫폼에서 RMSNorm 연산자에 대한 다음 성능 테스트 결과는 명확한 증거입니다. Python 개발 인터페이스 조합을 사용하여 구현한 경우와 비교하면 컴파일되고 최적화된 연산자는 수동 연산자와 통합되어도 4배 더 빠르게 실행됩니다. 이에 비해 14%의 성능 향상도 달성되었습니다. 이 결과는 플라이 패들 프레임이 찾은 유연성과 성능 간의 이상적인 균형을 완벽하게 보여줍니다.

이러한 이유로 Feipiao는 신경망 컴파일러 기술을 중요한 연구 개발 방향으로 간주합니다. 다음은 Feipiao 컴파일러의 전체 아키텍처 다이어그램입니다.



프리젠테이션 계층에서는 PIR의 확장 기능을 사용하여 CINN 프런트 엔드 모듈을 구현하여 연산자 분할, 재계산, 하위 그래프 분할, 차원 파생 모듈 및 기타 모듈을 포함한 계층 관련 변환을 처리하고 최종적으로 여러 컴파일러 백엔드를 얻습니다. .최적화된 하위 그래프를 생성합니다. 컴파일러 백엔드에서 이러한 융합 가능한 하위 그래프에 대해 컴파일러는 Compute 함수를 추가로 호출하여 이를 AST(추상 구문 트리)로 구성된 하위 수준 중간 표현(IR)으로 변환하고 이를 기반으로 루프를 수행합니다. 커널에 통합될 수 있는지 확인하기 위해 CINN 기본 IR에서 성능 조정 분석이 수행되어 최적의 구성을 얻습니다. 마지막으로 기본 IR이 특정 코드 구현으로 더욱 신중하게 변환됩니다.

생성적 대형 언어 모델 Llama와 Vincentian 그래프 모델 Stable Diffusion에 대한 실험 결과, 수동 성능 최적화가 없는 기본 버전에 비해 컴파일러의 최적화 기술을 사용하면 추론 속도가 각각 36%, 30% 더 빨라진 것으로 나타났습니다.

동적 및 정적 통합 및 자동 병렬화

자동 병렬 처리를 수행하는 이유는 무엇입니까?

현재 대형 모델에 대한 주류 학습 방법은 다양한 병렬 전략을 사용합니다. 이러한 병렬 전략은 동적 그래프 모드에서 구현되는 "수동" 병렬 방법, 즉 단일 카드를 기반으로 분할의 수동 처리( Tensor 분할, 계산 그래프), 통신(통신 연산자 추가), 비디오 메모리 최적화(비디오 메모리 공유, Re-Compute), 스케줄링 최적화(파이프라인 오케스트레이션, 비동기 계산 및 통신) 및 기타 전략을 개발자는 숙지해야 합니다. 모델 구조뿐만 아니라 병렬 전략 및 프레임워크에 대한 심층적인 이해도 갖추고 있습니다. 스케줄링 로직을 통해 대규모 모델의 개발 및 성능 최적화가 매우 향상됩니다. 모델 알고리즘 혁신을 담당하는 전담 알고리즘 팀 외에도 모델 병렬 최적화를 담당하는 전담 팀도 있어야 합니다. 이는 대규모 모델의 혁신과 반복에 많은 장애물을 가져옵니다.

대규모 모델 개발과 단일 카드 논리의 차이점을 설명하기 위해 간단한 예를 들어 보겠습니다. 병렬 전략으로 인해 Tensor 런타임 형태가 변경되므로 형태 처리와 관련된 운영자는 병렬 전략의 영향을 받을지 여부를 고려해야 합니다. 아래의 형태 변경 처리에서 볼 수 있듯이 분할 전략으로 인해 입력 형태가 변환되므로 출력 형태는 분할 전략에 따라 합리적으로 조정되어야 합니다.



이를 위해 동적 조건과 정적 조건을 통합하는 자동 병렬 방식을 제안합니다. 개발자는 소량의 텐서 분할 주석만 필요하며 프레임워크는 모든 텐서 및 연산자의 분산 분할 상태를 자동으로 도출하고 적절한 통신 연산자를 추가하여 결과의 ​​정확성을 보장할 수 있습니다. 이는 최종적으로 모델 구조를 기반으로 합니다. 그래픽 메모리 및 스케줄링 레이어 최적화와 결합된 클러스터 정보는 가장 효율적인 분산 병렬 전략을 자동으로 찾습니다.

자동 병렬 설계에서는 개발자에게 소량의 텐서 분할 주석만 필요합니다. 분할 방법을 추상화하고 분할 텐서(매개변수, 입력)와 분할 계산 그래프(파이프라인)라는 두 가지 유형의 분할 방법이 필요합니다. 이러한 두 가지 유형의 분할 방법을 구현하려면 프레임워크에 분산 텐서와 컴퓨팅 장치 간의 매핑 관계를 설명하는 메커니즘이 필요합니다. 이를 위해 ProcessMesh와 Placements의 두 가지 분산 개념을 도입합니다. 프로세스는 여러 장치를 여러 프로세스로 구성된 1차원 또는 다차원 배열로 매핑합니다. 다음 그림은 8개 장치로 구성된 두 가지 다른 ProcessMesh 추상 표현을 보여줍니다.



Placements는 Replicate, Shard, Partial의 세 가지 분산 태그로 구성된 목록입니다. 길이는 ProcessMesh의 차원과 일치하며 해당 컴퓨팅 장치의 차원에서 분산 텐서를 분할하는 데 사용되는 분산 태그를 나타내는 데 사용됩니다. 3개의 배포된 태그에 대한 자세한 설명은 다음과 같습니다.

아래 그림에서 볼 수 있듯이 Replicate는 텐서가 여러 장치에 복제 형태로 존재한다는 의미이고, Shard는 텐서가 특정 차원에 따라 여러 장치에 분할된다는 의미이며, Partial은 장치의 텐서가 불완전하다는 의미입니다. Reduce Sum 또는 Reduce가 필요합니다. 전체 상태는 평균 및 기타 작업을 다른 방식으로 수행한 후에만 얻을 수 있습니다.



분산 태그 추상화를 완료한 후 다음을 호출합니다.
paddle.distributed.shard_tensor() 인터페이스는 텐서 샤딩 표시를 구현합니다. 텐서 슬라이싱의 마킹과 자동 도출을 통해 복잡한 분산 하이브리드 병렬성을 표현할 수 있습니다. 다음 그림은 데이터 병렬성, 텐서 모델 병렬성, 파이프라인 병렬성으로 구성된 하이브리드 병렬성의 구체적인 예를 보여줍니다.



다음 코드는 혼합 병렬 처리의 구체적인 예를 보여줍니다.



자동 병렬 개발 접근 방식을 채택함으로써 개발자는 더 이상 복잡한 통신 논리를 고려할 필요가 없습니다. Llama 작업을 예로 들면, 분산된 학습 핵심 코드의 양이 50% 감소하여 개발 난이도가 크게 감소한 것을 일부 실험에서 볼 수 있습니다. 글로벌 분석 및 기타 최적화의 도움으로. , 성능도 동적 그래프의 수동 병렬화 성능보다 좋습니다.

앞으로는 텐서 분할 마커를 사용하지 않고 완전 자동 병렬성을 더욱 탐구하여 개발자가 독립 실행형 코드를 작성하는 것처럼 분산 코드를 작성할 수 있게 하여 대규모 모델의 개발 경험을 더욱 향상시킬 것입니다.

산업적 이점

일반적으로 Flying Paddle의 차세대 프레임워크인 Flying Paddle Framework 3.0-Beta는 대형 모델 및 이기종 멀티 코어를 위해 특별히 설계되었습니다. 이는 이기종 멀티 코어에 하향 조정되고 대형 모델을 지원하는 하드웨어 상향 통합을 완전히 해제합니다. 모델 훈련 및 추론. 동시에 통합된 동적 및 정적 자동 병렬화, 자동 컴파일러 최적화, 통합 대형 모델 훈련 및 푸시, 대형 모델 다중 하드웨어 적응이라는 네 가지 주요 기능을 갖추고 있어 업계 서비스 능력을 종합적으로 향상시킵니다.

통합된 정적 및 동적 자동 병렬화: 이 기능은 산업 개발 및 교육 비용을 크게 절감합니다. 사용자는 단일 카드 기준으로 소량의 텐서 분할만 표시하면 되며 Flying Paddle Framework는 자동으로 분산 분할 정보 도출을 완료하고 통신 연산자를 추가하여 논리의 정확성을 보장합니다. 동시에 모델 구조 및 클러스터 정보를 기반으로 비디오 메모리 및 스케줄링 계층의 최적화와 결합되어 Flying Paddle은 가장 효율적인 분산 병렬 전략을 자동으로 찾아 하이브리드 병렬 훈련의 개발 비용을 크게 절감할 수 있습니다. 개발자는 혁신의 모델과 알고리즘에 더 집중할 수 있습니다.

컴파일러 자동 최적화: 이 기능은 성능 최적화 비용을 크게 줄여줍니다. Fei Paddle의 컴파일러는 프레임워크와 통합되도록 설계되었으며 생성 모델 및 과학 컴퓨팅 모델과 같은 다양한 모델의 효율적인 훈련 및 가변 형상 추론을 지원하여 컴퓨팅 유연성과 고성능 간의 적절한 균형을 제공합니다. 연산자와 코드 생성 기술의 자동 융합을 통해 Llama2, Stable Diffusion 등 생성 모델의 추론 성능이 30% 이상 향상되었습니다.

대형 모델의 통합 교육 및 홍보: 이 기능은 업계에 최고의 개발 경험을 제공합니다. 훈련 및 추론 기능을 서로 재사용할 수 있어 대규모 모델의 전체 프로세스에 통일된 개발 경험과 궁극적인 훈련 효율성을 제공합니다. 움직임에서 고요함으로 이동함으로써 훈련과 추론 작업이 원활하게 연결될 수 있습니다. RLHF(인간 피드백을 통한 강화 학습) 교육 프로세스 중 생성 계산을 추론 최적화에 재사용하여 2.1배 가속을 달성할 수 있습니다. 동시에 추론 및 수량화 시나리오 재사용 훈련을 위한 분산 자동 병렬 전략의 효율성이 3.8배 향상됩니다.

대형 모델 멀티 하드웨어 적응: Flying Paddle의 중요한 기능 중 하나는 이기종 멀티 코어에 적응하고 하드웨어의 잠재력을 최대한 활용하는 것입니다. 액세스 메커니즘 측면에서 Flying Paddle은 간단하고 효율적인 추상 인터페이스와 기본 운영자 시스템을 제공하여 적응 비용을 줄입니다. 운영 메커니즘 측면에서 스케줄링, 스토리지 공유 및 기타 메커니즘을 최적화하여 스케줄링 효율성을 향상시킵니다. 운영자 커널의 관점에서 Feipiao는 엔드투엔드 성능을 향상시키기 위한 컴파일러 자동 융합 튜닝 솔루션을 제공합니다. 동시에 Feipiao는 새로운 하드웨어 제조업체를 위한 코드 통합, 지속적인 통합 및 모델 회귀 테스트와 같은 R&D 인프라도 구축했습니다. 이러한 메커니즘을 통해 새로운 하드웨어가 Feipiao의 일반 릴리스 시스템에 포함되어 사용자가 컴파일하지 않고도 직접 설치하고 시험해 볼 수 있습니다. Flying Paddle의 모든 기능을 갖춘 저비용 액세스 메커니즘은 하드웨어 제조업체가 총 25,000개 이상의 커밋을 포함하여 Flying Paddle에 3,456개의 PR을 공동으로 기여하도록 유도했습니다.

이것은 Fei Paddle의 차세대 프레임워크 3.0입니다. 현재 3.0-베타 버전은 개발자에게 공개되어 있으며 모든 개발 인터페이스는 2.0과 완벽하게 호환됩니다. 개발자는 사용하고 피드백을 제공하는 것을 매우 환영합니다.