Home
Login

Asistente de IA de código abierto basado en chat, entrenado con aprendizaje por refuerzo con retroalimentación humana, diseñado para proporcionar acceso gratuito a modelos de lenguaje grandes para todos.

Apache-2.0Python 37.4kLAION-AI Last Updated: 2024-08-17

Introducción Detallada al Proyecto Open Assistant

Resumen del Proyecto

Open Assistant es un proyecto de asistente de IA conversacional de código abierto desarrollado por la organización LAION-AI. El proyecto tiene como objetivo proporcionar acceso a modelos de lenguaje grandes basados en chat de alta calidad para todos, creando una revolución en la tecnología del lenguaje a través del código abierto.

⚠️ Aviso Importante: El proyecto OpenAssistant ha finalizado y ahora está completo. El conjunto de datos final publicado se puede encontrar en OpenAssistant/oasst2 en HuggingFace.

Visión del Proyecto

Open Assistant cree que la colaboración de código abierto puede crear una revolución en el campo de la tecnología del lenguaje, al igual que Stable Diffusion ayudó al mundo a crear arte e imágenes de nuevas maneras. El objetivo final del proyecto no es solo replicar ChatGPT, sino construir el asistente del futuro, capaz de:

  • Redactar correos electrónicos y cartas de presentación
  • Realizar trabajos significativos
  • Usar APIs
  • Investigar información dinámicamente
  • Apoyar la personalización y la expansión

Metodología Técnica

Pila Tecnológica Central

El objetivo principal del proyecto es tener un chatbot que pueda responder preguntas, adaptando modelos de lenguaje grandes (LLM) para seguir mejor las instrucciones. Para ello, el proyecto utilizó el método propuesto en el artículo de InstructGPT, que se basa en el aprendizaje por refuerzo con retroalimentación humana (RLHF).

Método de Entrenamiento en Tres Pasos

El proyecto sigue el método de tres pasos descrito en el artículo de InstructGPT:

Paso Uno: Recopilación de Datos

  • Recopilar muestras de instrucciones-finalizaciones generadas por humanos de alta calidad (indicación + respuesta)
  • Objetivo: Más de 50,000 muestras
  • Diseñar un proceso de crowdsourcing para recopilar y revisar las indicaciones
  • Evitar ataques de inundación de entrenamiento/datos tóxicos/basura/información personal
  • Incentivar a la comunidad a través de tablas de clasificación, mostrando el progreso y los usuarios más activos

Paso Dos: Recopilación de Clasificaciones

  • Muestrear múltiples finalizaciones para cada indicación recopilada
  • Mostrar aleatoriamente las finalizaciones de la indicación a los usuarios para clasificarlas (de mejor a peor)
  • Manejar usuarios poco confiables o maliciosos mediante crowdsourcing
  • Recopilar votos de múltiples usuarios independientes para medir la coherencia general
  • Utilizar los datos de clasificación recopilados para entrenar un modelo de recompensa

Paso Tres: Entrenamiento RLHF

  • Fase de entrenamiento de aprendizaje por refuerzo con retroalimentación humana basada en indicaciones y modelos de recompensa
  • Se puede utilizar el modelo resultante para continuar con los pasos de muestreo de finalización para la próxima iteración

Arquitectura del Proyecto

Configuración del Entorno de Desarrollo

El proyecto admite la implementación completa de la pila Docker, incluido el sitio web, el backend y los servicios de dependencia relacionados.

Comando de inicio básico:

docker compose --profile ci up --build --attach-dependencies

Los usuarios de MacOS con chip M1 deben usar:

DB_PLATFORM=linux/x86_64 docker compose ...

Acceso local:

Soporte de Contenedores de Desarrollo

El proyecto proporciona soporte de entorno de desarrollo estandarizado:

  • Contenedor de desarrollo VSCode local
  • Entorno de navegador web GitHub Codespaces
  • Los archivos de configuración se encuentran en la carpeta .devcontainer

Características Funcionales

Funcionalidad de Chat

  • El frontend de chat está en línea, los usuarios pueden iniciar sesión y comenzar a chatear
  • Soporte para dar "me gusta" o "no me gusta" a las respuestas del asistente
  • Experiencia de interacción en tiempo real

Recopilación de Datos

  • El frontend de recopilación de datos está en línea, los usuarios pueden iniciar sesión y comenzar a realizar tareas
  • Ayudar directamente a mejorar las capacidades de Open Assistant enviando, clasificando y etiquetando indicaciones y respuestas del modelo
  • Recopilación de datos de alta calidad mediante crowdsourcing

Sistema de Inferencia

El proyecto incluye un sistema de inferencia completo que admite:

  • Implementación local de servicios de inferencia
  • Capacidad de ejecución en hardware de consumo
  • Diseño de arquitectura escalable

Características de Código Abierto

Participación de la Comunidad

  • El proyecto está organizado por LAION e individuos de todo el mundo interesados en llevar esta tecnología a todos
  • Los desarrolladores son bienvenidos a contribuir con código
  • Se proporcionan guías de contribución detalladas

Estado del Proyecto

Recordatorio Importante: El proyecto OpenAssistant ha finalizado y está completo. Aunque el proyecto en sí ha terminado:

  • El conjunto de datos final oasst2 está disponible en HuggingFace
  • El código sigue siendo de código abierto y accesible
  • La comunidad puede continuar desarrollando basándose en el trabajo existente

Requisitos Técnicos

Requisitos de Hardware

  • La visión del proyecto es crear un modelo de lenguaje grande que pueda ejecutarse en una sola GPU de consumo de gama alta
  • Soporte para la implementación de hardware de consumo
  • Rendimiento de inferencia optimizado

Opciones de Implementación

  • Implementación en contenedores Docker
  • Entorno de desarrollo local
  • Soporte de implementación en la nube
  • Implementación independiente del servicio de inferencia

Recursos Relacionados