noticias

El equipo de PyTorch presenta su hoja de ruta técnica, con casi cien páginas de documentos que revelan su dirección de desarrollo en la segunda mitad de 2024.

2024-07-15

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


Nuevo informe de sabiduría

Editor: Qiao Yang

[Introducción a la Nueva Sabiduría]Recientemente, el equipo de PyTorch anunció por primera vez la hoja de ruta de desarrollo, que fue modificada directamente a partir de documentos técnicos internos, revelando la próxima dirección de desarrollo de esta biblioteca clásica de código abierto.

Si desarrollas en Python en el campo de la IA, PyTorch debe ser uno de tus viejos amigos. En 2017, Meta AI lanzó esta biblioteca de código abierto en el campo del aprendizaje automático y el aprendizaje profundo, que ahora se encuentra en su séptimo año.

Según las estadísticas de 2021 de Assembly AI, los 30 modelos más populares de HuggingFace pueden ejecutarse en PyTorch, y el 92% de los modelos son propiedad de PyTorch. Esta proporción hace que muchos competidores, incluido TensorFlow, estén fuera de su alcance.


Recién el 10 de julio, el equipo de ingeniería de PyTorch publicó públicamente su documento de hoja de ruta por primera vez, estableciendo la dirección de desarrollo en la segunda mitad de 2024.

Soumith Chintala, cofundador de Meta y líder del equipo de PyTorch, anunció oficialmente la noticia en Twitter.

Dijo que espera hacer públicas las motivaciones y objetivos de investigación de los ingenieros.

"Si bien todo el desarrollo de PyTorch es público en GitHub, los documentos reales de planificación y hoja de ruta escritos por los equipos de varias filiales de PyTorch no son públicos, por lo que decidimos realizar cambios para aumentar la transparencia".


Gott Brath, director de proyectos técnicos del equipo de PyTorch, también hizo una declaración similar en el foro.


Hemos estado pensando en cómo compartir una hoja de ruta del trabajo que está realizando el equipo en PyTorch. Hacemos planificación cada dos años, por lo que estas son algunas versiones públicas de nuestros planes OSS H2 2024 para varias áreas clave en PyTorch.

Estos archivos son básicamente los documentos internos y los planes de trabajo del equipo de PyTorch. Después de eliminar parte del contenido, se publicaron como una hoja de ruta, que involucra los siguientes aspectos de PyTorch:

- Bibliotecas principales y rendimiento principal.

- Distribuido

- antorcha, antorcharec, antorchaVisión

- Borde de PyTorch

- Carga de datos (DataLoading)

- Núcleo e implementación del compilador.

- Infraestructura de desarrollador

Cada documento contiene al menos tres partes, basadas en ideas de OKR:

- fondo

- Las 5 principales áreas de enfoque y objetivos: metas, resultados clave, riesgos conocidos o desconocidos y medidas de mitigación correspondientes (máximo una página)

- Principales 3 a 5 aspectos para mejorar el nivel de ingeniería: clasificación del pilar BE, objetivos, indicadores/estado/objetivos específicos, riesgos conocidos o desconocidos y medidas de mitigación, impacto/costo, prioridad/nivel de confianza (máximo una página)

Entre ellos, el Pilar BE puede considerarse como las "cinco máximas" escritas por Meta al equipo de desarrollo. Los contenidos específicos son:

Mejor código, mejor documentación, empoderamiento de equipos, código moderno, mejor arquitectura

No sé si algún desarrollador ha tenido problemas con la longitud de los documentos debido a la regla de "máximo una página". Después de todo, los documentos son más caros que los documentos largos. Condensar muchos requisitos de desarrollo en una sola página no sólo ahorra tiempo a los colegas, sino que también. También pone a prueba las habilidades del escritor.

Además, en el documento también se pueden ver algunas ideas excelentes del equipo de desarrollo de Meta, como enfatizar la colaboración de varios equipos de módulos, enfatizar la integración de API y el desarrollo conjunto con socios externos, y enfatizar la interacción con la comunidad y los desarrolladores de código abierto.

Al lanzar una nueva base de código como ExecuTorch, o querer aumentar la influencia del compilador PyTorch, el equipo generalmente comienza desde dos aspectos: uno es hacer todos los esfuerzos para mejorar el rendimiento y apuntar directamente a SOTA; integre profundamente Comience con casos de uso más innovadores.

Quizás estas sean las claves del éxito de Meta en el campo del código abierto a lo largo de los años.

A continuación se presenta un extracto parcial y un resumen del contenido de cada documento.


Dirección original: https://dev-discuss.pytorch.org/t/meta-pytorch-team-2024-h2-roadmaps/2226

Bibliotecas principales y rendimiento principal

Las bibliotecas principales involucradas en el documento incluyen TendorDict, torchao, NN, TorchRL, etc.

En términos de rendimiento, el equipo de PyTorch ha propuesto el objetivo de lograr el rendimiento SOTA en el entrenamiento y la inferencia de modelos. Las medidas incluyen la introducción de tecnología de optimización de arquitectura y un kernel de alto rendimiento para formar una combinación con toda la pila de tecnología de PyTorch.

El año pasado fue testigo del rápido desarrollo de GenAI. Han surgido muchas bibliotecas externas para apoyar el desarrollo en el campo de la investigación, pero muchas de ellas no dependen directamente de PyTorch, lo que amenazará el dominio de PyTorch en el campo de la investigación científica.

Para seguir el ritmo nuevamente, PyTorch brindará soporte para tecnologías de desarrollo comunes como cuantificación, dispersión, MoE y entrenamiento de baja precisión, incluidos bloques de construcción y API (principalmente integradas en torchao) para ayudar a los modelos de varias arquitecturas Transformer. mejorar el rendimiento.

La biblioteca torchao puede ayudar a los investigadores a personalizar técnicas de optimización, diseño y tipos de d de alto rendimiento dentro del marco de PyTorch, ampliando el alcance de uso a varios escenarios, como entrenamiento, inferencia y ajuste.

Además, las actualizaciones de la biblioteca principal incluirán lo siguiente:

- La biblioteca de optimización automática torchao ha logrado un gran éxito. El siguiente paso es mejorar la organización de su código y separar las operaciones numéricas de la biblioteca principal.

- Aborda la modularidad central de TendorDict, admite la serialización de cargas/almacenamiento y hace que se ejecute 2 veces más rápido en modo ansioso

- Continuando con el éxito de la carga asignada de memoria en la primera mitad del año, continuar mejorando el rendimiento y la seguridad de la carga/almacenamiento de modelos.

- Reducir los gastos generales de TorchRL en un 50%

- Se agregó soporte central para NoGIL

- Se solucionó el problema de que la variable TORCH_env reportada por los usuarios no funciona

El documento también menciona la obsolescencia del módulo nn.transformer, diciendo que se publicarán una serie de tutoriales y casos de uso para mostrar cómo usar torch.compile, sdpa, NJT, FlexAttention, custom_op, torchao y otros módulos para construir Transformer.

repartido

El entrenamiento previo de LLM generalmente abarca docenas o incluso miles de GPU y, a medida que la escala de parámetros del modelo aumenta gradualmente, la inferencia y el ajuste fino son difíciles de completar en una sola GPU.

Por lo tanto, el próximo diseño "distribuido" de PyTorch cubre de manera integral los tres enlaces de entrenamiento, inferencia y ajuste fino, y propone lograr entrenamiento distribuido a ultra gran escala, ajuste fino con alta eficiencia de memoria y razonamiento distribuido de múltiples hosts. .

tren

Los modos paralelos admitidos de forma nativa por PyTorch incluyen principalmente los siguientes:

- Paralelo de datos fragmentados completos (FSDP)

-Datos de fragmentación híbridos paralelos (HSDP)

-Tensor paralelo (TP)

- Tubería paralela (PP)

- Secuencia paralela (SP)

-Contexto paralelo (CP)

PyTorch espera modularizar aún más varios métodos paralelos en TorchTitan, permitiendo a los desarrolladores combinar libremente y lograr un paralelismo N-dimensional según sea necesario.


El documento menciona específicamente la necesidad de agregar soporte para dos arquitecturas emergentes, MoE y multimodalidad, como el paralelismo experto y la optimización de algoritmos de enrutamiento.

Además de la actualización de TorchTitan, el equipo distribuido también necesita trabajar más estrechamente con el equipo del compilador para integrarse mejor con el módulo torch.compile para brindar mejoras de rendimiento adicionales a escenarios distribuidos a gran escala.

Ajuste e inferencia

Ajuste fino: combinado con torchtune, ponga en uso la solución FSDP2 LoRA/QLoRA y admita la cuantificación NF4 del diccionario de estado del modelo.

Razonamiento: PP y DP se han convertido en el núcleo de las API distribuidas. A continuación, debemos prestar atención al razonamiento distribuido de torchtitan, que admite métodos de TP asincrónicos de modelos grandes.

El documento también menciona que la API de inferencia de HuggingFace se migrará de PiPPy a PyTorch (completada por HuggingFace).

Torchtune, TorchRec y TorchVision

melodía de antorcha

El lanzamiento de torchtune tiene como objetivo ayudar a los usuarios a ajustar LLM de manera más conveniente. Esta es también la solución oficial para ajustar el modelo Llama.

El "ajuste fino" definido por torchtune tiene un alcance muy amplio, que se puede resumir en tres tipos de escenarios:

- Adaptación del modelo a conjuntos de datos de dominios específicos o tareas posteriores.

- Modelado de recompensas y preferencias, como RLHF, DPO, etc.

- Proceso de formación que incluye destilación y cuantificación.

Las actualizaciones de la segunda mitad del año respaldarán el ajuste de los flujos de trabajo de los agentes, al tiempo que se centrarán en mejoras en el rendimiento.

El equipo cooperará con módulos de compilación, núcleo, distribuidos y otros para proporcionar un ajuste eficiente y establecer puntos de referencia de rendimiento de ajuste representativos dentro del ecosistema PyTorch.

Dado que torchtune también es una biblioteca de código abierto más nueva, la interacción con la comunidad de código abierto también es esencial.

El documento propone publicar artículos de blog y tutoriales, realizar conferencias técnicas, etc. para mejorar la comprensión del usuario. También definirá indicadores cuantitativos para medir la contribución de torchturn en el ecosistema LLM.

Además de la comunidad de código abierto, torchune se integrará con al menos un socio y participará en su comunidad para promover el uso de torchune.

AntorchaVisión

Como actor absolutamente dominante en el campo de los CV, la tecnología de TorchVision es relativamente madura, por lo que se proponen muy pocas actualizaciones en la hoja de ruta.

El equipo continuará trabajando en la dirección del preprocesamiento, admitirá más formatos (como WebP, HEIC) y plataformas (como CUDA) en el espacio de codificación/decodificación de imágenes y mejorará el rendimiento de codificación/decodificación del formato jpeg en GPU.

AntorchaRec

TorchRec tiene como objetivo proporcionar primitivas de escasez y paralelismo comúnmente utilizadas en sistemas de recomendación a gran escala. La primera versión estable, TorchRec 1.0, se lanzará en otoño.

Borde

Actualmente, la biblioteca de código abierto ExecuTorch ha lanzado una versión Alpha, que se basa principalmente en torch.compile y torch.export para admitir el análisis, la depuración y la inferencia de modelos en dispositivos móviles y dispositivos de borde (como AR/VR, dispositivos portátiles).

En la segunda mitad del año, el equipo de Edge lanzará la versión Beta de xecuTorch y brindará soluciones dentro del ecosistema PyTorch para los modelos de la serie Llama de Meta y otros modelos de código abierto.

Los objetivos clave cubren principalmente dos direcciones. El primero es proporcionar funciones básicas e infraestructura confiable para la IA en el dispositivo, que incluye:

- Garantizar la estabilidad de API para C++ y Python

- Implementar una serie de funciones principales: soporte de compresión de modelos, administración de ubicación de caché de proxy, separación de datos y programas

El segundo es proteger esta base de código incipiente, cultivar la influencia dentro de la comunidad de código abierto y mantener buenas relaciones de cooperación con empresas como Arm, Apple y Qualcomm.

El objetivo de la influencia de la comunidad incluso se ha cuantificado, lo que requiere que el código obtenga 3.000 estrellas en GitHub y sea clonado (bifurcado) 500 veces. Los lectores interesados ​​pueden seguir prestando atención y ver si el equipo puede completar este OKR antes de fin de año.

Carga de datos

La biblioteca de conjuntos de datos HuggingFace basada en el formato Apache Arrow ha surgido repentinamente en los últimos años con su carga/almacenamiento de alta velocidad sin limitaciones de memoria, y parece haber robado el protagonismo de las funciones relacionadas con PyTorch.

El documento sobre carga de datos comienza con la ambición de hacer que la biblioteca TorchData vuelva a ser excelente y restablecer el dominio de PyTorch en la carga de datos.

Para lograr este objetivo, es necesario hacer que las funciones relevantes sean flexibles, escalables, de alto rendimiento y eficientes en memoria, al mismo tiempo que se logra una operación tonta y se admite el entrenamiento multimodal de varias escalas.

Los objetivos de actualización específicos incluyen los siguientes aspectos:

- El desarrollo funcional y la interfaz de DataLoader implementarán primero el principio de GitHub, y DataPipes y DataLoader v2 quedarán obsoletos y eliminados gradualmente.

- Garantice límites claros y una buena interoperabilidad entre TorchTune, TorchTitan, HuggingFace y TorchData, y admita conjuntos de datos múltiples y carga de datos multimodal

- HuggingFace utiliza la API de StatefulDataLoader para garantizar la compatibilidad y actualizar oportunamente muestras y casos de prueba.

Núcleo e implementación del compilador

Las funciones principales del compilador de PyTorch se han vuelto cada vez más perfectas después de años de desarrollo. Lo que hay que recuperar por ahora es una integración más profunda y un mayor soporte de optimización en los campos de LLM y GenAI.

La hoja de ruta propone llevar la función torch.compile() a todos los aspectos del ciclo de uso de LLM y GenAI (inferencia, ajuste fino, entrenamiento previo), de modo que se puedan compilar modelos importantes con PyTorch nativo cuando se publiquen.

Para lograr este objetivo, el documento propone muchas medidas específicas, como trabajar con los equipos de torchtune y TorchTitan para mejorar el rendimiento de la compilación y lanzar versiones compiladas nativas de PyTorch de al menos dos modelos de alto perfil en la segunda mitad del año.

Además, el compilador puede agregar capacidades de visualización para generar gráficos modelo que expresen el proceso de cálculo directo/propagación hacia atrás en modo de entrenamiento no entusiasta.

También hay muchos planes para brindar soporte al usuario, como mejorar el monitoreo y la observabilidad del sistema y ayudar a los usuarios a depurar problemas de compilación por sí mismos. Los objetivos clave también incluyen establecer un equipo de soporte al usuario para abordar los problemas planteados por los desarrolladores en plataformas como GitHub en varias áreas clave (clases de datos, gestión de contexto, etc.).

Referencias:

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

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

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