notícias

Estrutura de remo voador avançada 3.0!Um artigo explica os cinco novos recursos, incluindo “Treinamento e envio integrado de modelos grandes”

2024-08-01

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

Como software básico, a estrutura de aprendizagem profunda não só promove o rápido progresso da tecnologia de aprendizagem profunda, mas também estabelece uma base sólida para a aplicação generalizada da tecnologia de inteligência artificial.

A estrutura de aprendizagem profunda fornece aos desenvolvedores interfaces de desenvolvimento convenientes e fáceis de usar que abstraem dados e operações altamente, permitindo que os desenvolvedores se concentrem mais no design de algoritmos e modelos sem ter que se prender aos detalhes do processamento de dados subjacente. Através dessas interfaces, os desenvolvedores não precisam perceber e lidar diretamente com detalhes complexos de desenvolvimento de hardware subjacentes, melhorando muito a eficiência e a experiência do desenvolvimento. Em segundo lugar, a estrutura de aprendizagem profunda também fornece a poderosa função de diferenciação automática. Os desenvolvedores geralmente só precisam escrever o código para a rede de propagação direta, enquanto a complicada rede de retropropagação é automaticamente concluída pela estrutura.

Como a primeira plataforma de aprendizagem profunda aberta, rica em recursos e de código aberto da China, Fei Paddle foi lançado da versão 1.0, que usa imagens estáticas por padrão, para a versão 2.0, que usa imagens dinâmicas por padrão e pode realizar a integração de imagens dinâmicas e estáticas e treinamento e push. Fei Paddle Framework Foi capaz de integrar perfeitamente a flexibilidade dos gráficos dinâmicos e a eficiência dos gráficos estáticos, e oferece suporte ao treinamento paralelo híbrido de modelos recentemente, versão 3.0, que foi refinado para o; era dos modelos grandes, foi lançado oficialmente! Flying Paddle inaugurou oficialmente uma nova geração de inovação em tecnologia de quadros!

Pensamento de design

A concepção da estrutura de aprendizagem profunda é crucial para promover o desenvolvimento da tecnologia de inteligência artificial, e o seu principal objectivo de concepção é facilitar a inovação e a aplicação da tecnologia de aprendizagem profunda.

Como fazer isso?

A estrutura precisa considerar plenamente as necessidades dos desenvolvedores e fabricantes de hardware.

Do ponto de vista do usuário, uma excelente estrutura de aprendizado profundo deve fornecer aos desenvolvedores a melhor experiência de desenvolvimento. Isto não significa apenas fornecer um ambiente de desenvolvimento fácil de usar, mas, mais importante ainda, deve ser capaz de reduzir significativamente os custos de aprendizagem e de tempo dos desenvolvedores, ao mesmo tempo que melhora significativamente a conveniência do desenvolvimento. Para tanto, o Flying Paddle Framework apresenta o conceito de “unificação do movimento e da estática, integração do treinamento e do empurrão e paralelismo automático”, o que melhora muito a eficiência do desenvolvimento.

Do ponto de vista da adaptação de hardware, os aplicativos modernos de aprendizagem profunda geralmente precisam ser executados em diversas plataformas de hardware. Portanto, a estrutura deve ser compatível e adaptável a uma variedade de dispositivos de hardware diferentes. Isso requer que a estrutura isole de forma inteligente as diferenças entre as diferentes interfaces de hardware e alcance ampla adaptabilidade de hardware. Ao mesmo tempo, para aproveitar ao máximo o desempenho do hardware, a estrutura também precisa ter a capacidade de software e hardware trabalharem juntos para garantir o desempenho ideal ao utilizar recursos de hardware.

Ao mesmo tempo, um bom quadro também precisa de ter em conta a tendência geral de desenvolvimento da tecnologia de IA e as reais necessidades de aplicação da indústria.

Em termos de desenvolvimento tecnológico, tecnologias de ponta como o Large Language Model (LLM), MOE (Mixture of Experts), multimodalidade e inteligência científica (IA para Ciência) tornaram-se gradualmente novos centros de investigação. À medida que a complexidade do modelo aumenta, problemas como gargalos de computação, gargalos de armazenamento, gargalos de acesso à memória e gargalos de comunicação tornam-se gradualmente mais proeminentes, e a necessidade de treinamento distribuído e otimização geral do desempenho torna-se cada vez mais urgente.

Ao nível da industrialização, a estrutura precisa de ter capacidades de processo completo que apoiem a integração de formação, compressão e raciocínio. Isto significa que desde o treinamento do modelo até a otimização e a implantação e inferência reais, a estrutura deve fornecer uma solução completa e eficiente para atender às necessidades reais da indústria em termos de tecnologia de aprendizagem profunda.

Somente uma estrutura que possa acompanhar as tendências e resistir ao polimento pode fornecer suporte contínuo e estável aos desenvolvedores de todas as esferas da vida na indústria, na academia e na pesquisa.


Conceito de design e principais características do Flying Paddle Frame 3.0

Para resumir os requisitos acima, Feipiao fornecerá aos desenvolvedores uma estrutura de aprendizado profundo que "unifica dinâmica e estática, integra treinamento e push, paralelização automática, otimização automática e ampla adaptação de hardware. Os desenvolvedores podem escrever código distribuído da mesma forma que escrevem stand-". sozinho código, sem a necessidade de perceber comunicação complexa e lógica de agendamento, você pode realizar o desenvolvimento de grandes modelos, você pode escrever redes neurais em Python como escrever fórmulas matemáticas, sem usar linguagens de desenvolvimento de hardware para escrever códigos de kernel de operadores complexos; e você pode conseguir uma operação eficiente.

A versão 3.0 do Flying Paddle Framework surgiu, continuando o conceito de design da versão 2.x de dinâmica e estática unificada, e treinamento e push integrados. Sua interface de desenvolvimento é totalmente compatível com a versão 2.x. Isso significa que o código desenvolvido na versão 2.x pode ser executado diretamente na versão 3.0 sem modificação na maioria dos casos. Ele se concentra no lançamento de quatro novos recursos: paralelização automática unificada dinâmica e estática, otimização automática do compilador, treinamento de modelos grandes e integração push e adaptação multi-hardware de modelos grandes. Esses recursos foram desenvolvidos desde a versão 2.6 ou anterior do Flying Paddle Framework e agora atingiram o estágio de uso de teste externo. Esses novos recursos trouxeram melhorias significativas em termos de experiência do usuário, desempenho, conveniência de desenvolvimento secundário e adaptabilidade de hardware. Esta versão contém melhorias em algumas funções existentes da versão 2.x do framework e está madura e estável sem usar novos recursos.

Visão geral da arquitetura da estrutura

A fim de concretizar as características acima mencionadas da estrutura de aprendizagem profunda, a arquitetura da estrutura deve ser cuidadosamente projetada para garantir que possa suportar a construção de vários modelos complexos e alcançar uma integração perfeita com diversos chips. A seguir, um diagrama de arquitetura intuitivo será utilizado para demonstrar detalhadamente os módulos funcionais abordados na estrutura de nova geração do Flying Paddle, bem como as interações e conexões entre esses módulos. A seguir está o diagrama de arquitetura do Flying Paddle Framework 3.0.


Diagrama de arquitetura do Flying Paddle Framework 3.0

Interfaces ricas: O Flying Paddle Framework fornece uma variedade de interfaces de desenvolvimento relacionadas ao aprendizado profundo, como representação de tensores, cálculos matemáticos, rede de modelos, estratégias de otimização, etc. Por meio dessas interfaces, os desenvolvedores podem criar e treinar facilmente seus próprios modelos de aprendizado profundo sem entrar nos detalhes técnicos subjacentes.

Na interface de desenvolvimento, o Flying Paddle Framework pode ser dividido em quatro níveis: camada de apresentação, camada de agendamento, camada de operador e camada de adaptação.

Camada de apresentação: concentra-se na expressão e conversão de gráficos computacionais e fornece funções básicas como dinâmico para estático (gráficos dinâmicos em gráficos estáticos), diferenciação automática, paralelismo automático, combinação de operadores e otimização de gráfico computacional por meio de representação intermediária altamente escalável PIR. Suporte sólido.

Camada de agendamento: Responsável pela orquestração inteligente e agendamento eficiente de códigos ou gráficos de cálculo, e pela capacidade de gerenciar e otimizar memória gráfica e memória de acordo com as necessidades reais, e apoiar a execução eficiente de gráficos dinâmicos e gráficos estáticos. Quer os desenvolvedores optem por usar gráficos dinâmicos ou estáticos para o desenvolvimento de modelos, o Flying Paddle Framework pode fornecer um ambiente de execução eficiente, garantindo ao mesmo tempo a utilização ideal de recursos.

Camada de operador: É composta pelo compilador de rede neural CINN e pela biblioteca de operadores PHI, cobrindo funções-chave como definição de tensor, definição de operador, fusão automática de operador e implementação de kernel de operador.

Camada de adaptação: é usada para implementar a adaptação ao chip subjacente, incluindo funções como gerenciamento de dispositivos, adaptação do operador, adaptação de comunicação e acesso à compilação.

A seguir, o foco será a nova e importante atualização da arquitetura da versão Flying Paddle 3.0. Esta atualização inclui principalmente os seguintes módulos:

1) Representação intermediária altamente escalável PIR, ao criar uma representação intermediária unificada para toda a arquitetura, rompe as barreiras de cada módulo na camada de estrutura e aumenta o potencial do Flying Paddle nas áreas de computação científica, otimização de compilação e grandes modelos ;

2) O compilador de rede neural otimiza automaticamente e melhora muito o desempenho ponta a ponta do modelo por meio de fusão automática e ajuste de políticas;

3) A paralelização automática reduz o custo de desenvolvimento de modelos e otimização de desempenho de cenas de modelos grandes e melhora muito a experiência do usuário em cenas de modelos grandes.

Representação intermediária altamente estendida PIR

A representação intermediária (IR) de gráficos computacionais é uma pedra angular importante da otimização do desempenho da estrutura de aprendizado profundo, implantação de inferência e compiladores. Nos últimos anos, mais e mais estruturas e pesquisadores introduziram tecnologia de compilador na otimização de modelos de redes neurais para aprendizado profundo e, com base nisso, usaram conceitos, tecnologias e ferramentas de compilador para otimizar e gerar código de redes neurais automaticamente. Na era dos modelos grandes, existem requisitos mais elevados para RI em termos de flexibilidade, escalabilidade e integridade.

Portanto, na versão 3.0, Feipiao padroniza a definição de representação intermediária IR no nível da infraestrutura para obter representação unificada de toda a arquitetura e compartilhar os resultados do desenvolvimento em todas as direções upstream e downstream. A arquitetura IR de nova geração da Feipiao concentra-se nas duas dimensões importantes de alta flexibilidade e alta escalabilidade. Ela é desenvolvida por meio de recursos de expressão semântica mais completos e robustos, representação unificada de toda a arquitetura e mecanismo eficiente de estratégia de otimização de desempenho conectável (Pass) para alcançar uma semântica complexa. suporte, suporte de forma mais conveniente a estratégias de segmentação ricas sob paralelização automática de grandes modelos e conecte-se perfeitamente ao compilador de rede neural para obter otimização automática de desempenho e adaptação de vários hardwares.



Flying Paddle Intermediate Representation (PIR) abstrai um conjunto de componentes básicos altamente escaláveis ​​na camada inferior, abrangendo Tipo, Atributo, Op, Trait e Interface, e introduz o conceito de Dialeto, dando aos desenvolvedores a capacidade de expandir e personalizar livremente com flexibilidade, assim Fornece recursos de expressão semântica abrangentes e robustos. Na camada de representação do modelo, através do gerenciamento modular de múltiplos dialetos e da representação unificada de vários terminais, é alcançada uma representação unificada de toda a arquitetura integrando treinamento e inferência, é alcançada uma conexão perfeita entre operadores e compiladores e otimização automática e adaptação multi-hardware. são suportados. Na camada de transformação gráfica, ao unificar os módulos subjacentes e simplificar os conceitos básicos, ele fornece aos usuários uma experiência de desenvolvimento de baixo custo, fácil de usar e de alto desempenho, bem como um mecanismo de otimização de passagem rico e conectável. Flying Paddle PIR adere ao princípio de atribuição única estática (SSA) para garantir que o modelo seja equivalente a um gráfico acíclico direcionado e usa Valor e Operação para abstrair o gráfico de cálculo, onde Operação representa o nó e Valor representa a borda.

A operação representa um nó no gráfico de cálculo: cada operação representa um operador e contém zero ou mais regiões. A região representa um fechamento, que pode conter zero ou mais blocos. Bloco representa um bloco básico que está em conformidade com o princípio de atribuição única estática (SSA) e contém zero ou mais operações. Através do aninhamento de loops entre esses três, estruturas gramaticais arbitrariamente complexas podem ser construídas.

O valor representa uma aresta direcionada no gráfico de cálculo: é usado para conectar duas Operações, descrevendo assim a cadeia Use-Define (ou seja, cadeia UD) no programa. Entre eles, OpResult serve como fim de definição e é usado para definir um Valor enquanto OpOperand serve como fim de uso e descreve o uso de um determinado Valor;

Feipiao fornece dois mecanismos de desenvolvimento Pass, PatternRewriter e Declarative Rewrite Rule (DRR, abreviadamente), que levam em consideração a flexibilidade de customização e a facilidade de desenvolvimento. O método de desenvolvimento Pass de três estágios permite que os desenvolvedores se concentrem mais no processamento da lógica Pass sem prestar atenção aos detalhes do IR subjacente. Usando o mecanismo de desenvolvimento do Pass do PIR, os custos de desenvolvimento do Pass são reduzidos em 58% aplicados a cenários de inferência, mais de 84% das inferências do modelo são aceleradas em mais de 10%.

Otimização automática do compilador de rede neural

Existem três razões pelas quais precisamos desenvolver tecnologia de compilador:

1) Tendência de desenvolvimento de hardware: Combinando a história do desenvolvimento de hardware e as características da evolução tecnológica, o poder de computação se desenvolve muito mais rápido do que o desempenho de acesso à memória, o desempenho da CPU e o desempenho do acesso à memória do barramento afetam o desempenho dos operadores com uso intensivo de memória (classe norma); , ativação, etc.), o desempenho da CPU e a largura de banda do barramento afetam o agendamento e o desempenho. A tecnologia de otimização geral de fusão automática baseada em compilador pode fundir vários operadores em um grande operador. Ao reduzir a quantidade de acesso à memória e o número de operadores, ela pode melhorar significativamente o desempenho do modelo.

2) Tendência de desenvolvimento do modelo: A estrutura do modelo possui características de diversidade, e a demanda por diversidade depende fortemente da otimização geral do compilador.

3) Otimização de hardware múltiplo: Existem muitos tipos de hardware no mercado. Diferentes plataformas de hardware têm diferentes características e requisitos de otimização. Cada hardware requer muita mão de obra para ser otimizado. ser bastante reduzido o custo.

Vamos ilustrar isso através de um exemplo. Tomemos como exemplo a Normalização RMS (Root Mean Square Layer Normalization), que é frequentemente usada no modelo Llama. Sua fórmula de cálculo é relativamente simples e clara.



Suponha que precisamos implementar o cálculo da normalização RMS. A maneira mais simples é usar a interface de desenvolvimento de operação de tensor fornecida pela estrutura do remo voador e chamar operações como quadrado, soma, divisão, raiz e assim por diante para concluir. o código é o seguinte:



O código acima é simples de desenvolver, mas seu desempenho é ruim e ocupa muita memória de vídeo. Os desenvolvedores podem implementar o FusedRMSNorm, mas os requisitos para os desenvolvedores são maiores e o custo é maior.

Com a tecnologia de compilador de rede neural, podemos obter melhorias significativas de desempenho, mantendo um alto grau de flexibilidade e facilidade de uso. Os seguintes resultados do teste de desempenho do operador RMSNorm na plataforma A100 são uma evidência clara: em comparação com a implementação usando uma combinação de interfaces de desenvolvimento Python, o operador compilado e otimizado é executado 4 vezes mais rápido, mesmo se estiver integrado ao operador manual; , também foi alcançada uma melhoria de desempenho de 14%. Este resultado demonstra plenamente o equilíbrio ideal entre flexibilidade e desempenho encontrado pela estrutura do fly paddle.

Por esta razão, Feipiao considera a tecnologia do compilador de rede neural uma importante direção de pesquisa e desenvolvimento. A seguir está o diagrama geral da arquitetura do compilador Feipiao.



Na camada de apresentação, com a ajuda dos recursos de expansão do PIR, o módulo front-end CINN é implementado para processar transformações relacionadas à camada, incluindo divisão de operador, recálculo, divisão de subgráfico, módulos de derivação de dimensão e outros módulos, e finalmente obtém vários back-ends do compilador . Gere subgráficos otimizados. No back-end do compilador, para esses subgráficos fusionáveis, o compilador chamará ainda a função Compute para convertê-los em uma representação intermediária de baixo nível (IR) composta por uma árvore de sintaxe abstrata (AST) e executará um loop com base nisso. para garantir que ele possa ser integrado a um kernel no CINN subjacente ao IR, a análise de ajuste de desempenho será realizada para obter a configuração ideal; finalmente, o IR subjacente será cuidadosamente convertido em implementação de código específico;

Resultados experimentais no modelo generativo de linguagem grande Llama e no modelo gráfico vicentino Stable Diffusion mostram que usando a tecnologia de otimização do compilador, em comparação com a versão básica sem otimização de desempenho manual, a velocidade de inferência é 36% e 30% mais rápida, respectivamente.

Unificação dinâmica e estática e paralelização automática

Por que fazemos paralelismo automático?

Os atuais métodos de treinamento convencionais para grandes modelos usam uma variedade de estratégias paralelas. Essas estratégias paralelas são baseadas no método paralelo "manual" implementado no modo de gráfico dinâmico, ou seja, com base em um único cartão, processamento manual de segmentação ( segmentação de tensores, gráficos de cálculo), comunicação (adicionando operadores de comunicação), otimização de memória de vídeo (compartilhamento de memória de vídeo, recálculo), otimização de agendamento (orquestração de pipeline, cálculo assíncrono e comunicação) e outras estratégias que os desenvolvedores não devem apenas estar familiarizados. a estrutura do modelo, mas também possui um conhecimento profundo de estratégias e estruturas paralelas. A lógica de agendamento torna muito alto o desenvolvimento e a otimização do desempenho de grandes modelos. Além de ter uma equipe de algoritmos dedicada responsável pela inovação do algoritmo do modelo, também deve haver uma equipe dedicada responsável pela otimização paralela do modelo. Isso traz muitos obstáculos à inovação e iteração de grandes modelos.

Vamos dar um exemplo simples para ilustrar a diferença entre o desenvolvimento de modelos grandes e a lógica de cartão único. Como a estratégia paralela fará com que a forma do tempo de execução do Tensor mude, os operadores relacionados ao processamento de formas precisam considerar se serão afetados pela estratégia paralela. Conforme mostrado no processamento de remodelação abaixo, a estratégia de segmentação faz com que a forma de entrada seja transformada, portanto a forma de saída precisa ser razoavelmente ajustada de acordo com a estratégia de segmentação:



Para tanto, propomos um esquema paralelo automático que unifica condições dinâmicas e estáticas. Os desenvolvedores precisam apenas de uma pequena quantidade de anotações de segmentação de tensor, e a estrutura pode derivar automaticamente o status de segmentação distribuída de todos os tensores e operadores e adicionar operadores de comunicação apropriados para garantir a exatidão dos resultados, finalmente, será baseado na estrutura do modelo; e as informações do cluster, combinadas com a memória gráfica e a otimização da camada de agendamento, encontram automaticamente a estratégia paralela distribuída mais eficiente.

No projeto paralelo automático, os desenvolvedores precisam apenas de uma pequena quantidade de anotações de segmentação de tensor. Abstraímos os métodos de segmentação e precisamos de dois tipos de métodos de segmentação: segmentação de tensores (parâmetros, entradas) e segmentação de gráficos de cálculo (pipeline). Para implementar esses dois tipos de métodos de segmentação, a estrutura precisa de um mecanismo para descrever o relacionamento de mapeamento entre tensores distribuídos e dispositivos de computação. Para esse fim, apresentamos os dois conceitos distribuídos de ProcessMesh e Placements. ProcessMesh mapeia uma placa GPU. O processo mapeia vários dispositivos em matrizes unidimensionais ou multidimensionais compostas por vários processos. A figura a seguir mostra duas representações abstratas ProcessMesh diferentes compostas por 8 dispositivos.



Placements é uma lista composta por três tags distribuídas: Replicate, Shard e Partial. O comprimento é consistente com a dimensão do ProcessMesh. É usado para indicar qual tag distribuída é usada para dividir o tensor distribuído na dimensão do dispositivo de computação correspondente. . As descrições detalhadas das três tags distribuídas são as seguintes:

Conforme mostrado na figura abaixo, Replicar significa que o tensor existirá na forma de replicação em diferentes dispositivos. Shard significa que o tensor será dividido em diferentes dispositivos de acordo com dimensões específicas; requer Reduzir Soma ou Reduzir O estado completo pode ser obtido somente após Média e outras operações de maneiras diferentes.



Depois de completar a abstração de tags distribuídas, chamamos
A interface paddle.distributed.shard_tensor() implementa a marcação de fragmentação de tensor. Através da marcação e derivação automática do fatiamento de tensores, podemos representar paralelismo híbrido distribuído complexo. A figura abaixo mostra um exemplo específico de paralelismo híbrido composto de paralelismo de dados, paralelismo de modelo de tensor e paralelismo de pipeline.



O código a seguir mostra um exemplo específico de paralelismo misto.



Ao adotar uma abordagem de desenvolvimento paralelo automático, os desenvolvedores não precisam mais considerar lógicas de comunicação complexas. Tomando a tarefa Llama como exemplo, a quantidade de código central de treinamento distribuído foi reduzida em 50%, reduzindo bastante a dificuldade de desenvolvimento. A partir de alguns de nossos experimentos, pode-se ver que com a ajuda da análise global e outras otimizações. , o desempenho também é melhor que o desempenho da paralelização manual de gráficos dinâmicos.

No futuro, exploraremos ainda mais o paralelismo totalmente automático sem usar marcadores de divisão de tensor, permitindo que os desenvolvedores escrevam código distribuído da mesma forma que escrevem código independente, melhorando ainda mais a experiência de desenvolvimento de modelos grandes.

Vantagens industriais

Em geral, a estrutura de nova geração do Flying Paddle - Flying Paddle Framework 3.0-Beta é projetada especificamente para modelos grandes e multi-núcleos heterogêneos. Ele se adapta para baixo a multi-núcleos heterogêneos e libera totalmente o potencial de integração ascendente do hardware, suportando modelos grandes. Treinamento e inferência de modelo. Ao mesmo tempo, possui quatro recursos principais: paralelização automática unificada dinâmica e estática, otimização automática do compilador, treinamento de modelos grandes e integração push e adaptação multi-hardware de modelos grandes, o que melhora de forma abrangente a capacidade de atender a indústria.

Paralelização automática estática e dinâmica unificada: Esta função reduz muito o custo de desenvolvimento industrial e treinamento. Os usuários só precisam marcar uma pequena quantidade de segmentação de tensor em um único cartão, e o Flying Paddle Framework concluirá automaticamente a derivação das informações de segmentação distribuída e adicionará operadores de comunicação para garantir a correção da lógica. Ao mesmo tempo, com base na estrutura do modelo e nas informações do cluster, combinadas com a otimização da memória de vídeo e da camada de agendamento, o Flying Paddle pode encontrar automaticamente a estratégia paralela distribuída mais eficiente, reduzindo significativamente o custo de desenvolvimento do treinamento paralelo híbrido, permitindo desenvolvedores se concentrem mais em modelos e algoritmos de inovação.

Otimização automática do compilador: esse recurso reduz significativamente o custo de otimização de desempenho. O compilador Fei Paddle foi projetado para ser integrado à estrutura e pode suportar treinamento eficiente e raciocínio de forma variável de vários modelos, como modelos generativos e modelos de computação científica, proporcionando um bom equilíbrio entre flexibilidade computacional e alto desempenho. Através da fusão automática de operadores e tecnologia de geração de código, o desempenho de inferência de modelos generativos como Llama2 e Difusão Estável foi melhorado em mais de 30%.

Treinamento integrado e promoção de grandes modelos: Este recurso fornece à indústria a melhor experiência de desenvolvimento. Ele permite que os recursos de treinamento e inferência sejam reutilizados entre si, proporcionando uma experiência de desenvolvimento unificada e máxima eficiência de treinamento para todo o processo de modelos grandes. Ao passar do movimento para a quietude, o trabalho de treinamento e raciocínio pode ser perfeitamente conectado. Cálculos generativos durante o processo de treinamento RLHF (aprendizado por reforço com feedback humano) podem ser reutilizados para otimização de inferência, alcançando uma aceleração de 2,1x. Ao mesmo tempo, a eficiência da estratégia paralela automática distribuída para treinamento de reutilização de cenários de raciocínio e quantificação é aumentada em 3,8 vezes.

Adaptação multi-hardware de modelos grandes: Uma das características importantes do Flying Paddle é adaptar-se a multi-núcleos heterogêneos e liberar totalmente o potencial do hardware. Em termos de mecanismo de acesso, o Flying Paddle fornece uma interface abstrata simples e eficiente e um sistema operacional básico, reduzindo custos de adaptação. Em termos de mecanismo operacional, otimiza o agendamento, o compartilhamento de armazenamento e outros mecanismos para melhorar a eficiência do agendamento. Do ponto de vista dos núcleos do operador, Feipiao fornece uma solução de ajuste automático de fusão do compilador para melhorar o desempenho ponta a ponta. Ao mesmo tempo, Feipiao também construiu infraestrutura de P&D, como integração de código, integração contínua e teste de regressão de modelo para novos fabricantes de hardware. Esses mecanismos garantem que o novo hardware seja incluído no sistema de lançamento normal do Feipiao, e os usuários possam instalá-lo e testá-lo diretamente, sem compilar. O mecanismo de acesso totalmente funcional e de baixo custo do Flying Paddle atraiu fabricantes de hardware para contribuir conjuntamente com 3.456 PRs para o Flying Paddle, incluindo um total de mais de 25.000 commits.

Este é o framework 3.0 da nova geração do Fei Paddle. Atualmente, a versão 3.0-Beta está aberta aos desenvolvedores e todas as interfaces de desenvolvimento são totalmente compatíveis com o 2.0.