Especializarse en modelos de lenguaje grande (LLM) previamente entrenados para tareas de dominios específicos con datos de entrenamiento mínimos, está ganando popularidad, la adaptación de bajo rango o LoRA. Los inquilinos pueden entrenar varios modelos LoRA a un costo mínimo, ya que LoRA reduce en gran medida la cantidad de parámetros entrenables al mantener los pesos del modelo previamente entrenado y agregar matrices de descomposición de rangos entrenables a cada capa de la arquitectura Transformer. LoRA ahora forma parte de varios marcos de ajuste fino ampliamente utilizados. Por lo tanto, para satisfacer las demandas de sus inquilinos, los proveedores de ML deben ofrecer simultáneamente muchos modelos LoRA específicos. Los recursos de GPU se desperdician simplemente proporcionando modelos LoRA como si estuvieran entrenados individualmente.
Si se requieren k GPU para cada modelo LoRA, entonces parecería que se necesitan k × n GPU para admitir n modelos LoRA separados. Este método simple ignora la posibilidad de correlaciones de peso entre estos modelos LoRA porque provienen de los mismos modelos previamente entrenados. Sostienen que un sistema eficaz que admita varios modelos LoRA distintos debe cumplir con tres principios de diseño. Dado que las GPU (G1) son costosas y escasas, las cargas de trabajo de servicio LoRA multiinquilino deben concentrarse en una pequeña cantidad de GPU para maximizar el uso de la GPU. (G2) El procesamiento por lotes es una de las mejores formas, si no la mejor, de combinar cargas de trabajo de aprendizaje automático para aumentar el rendimiento y el uso de GPU, como lo han señalado estudios anteriores. Pero son funciones de procesamiento por lotes únicamente en los casos en que se solicitan modelos idénticos. Como resultado, deben permitir el procesamiento por lotes para varios modelos de LoRA. (G3) La mayoría de los costos de entrega de modelos se atribuyen a la etapa de decodificación. Entonces, lo único en lo que tienen que concentrarse es en la increíble actuación en el escenario. Pueden utilizar métodos simples, como la carga bajo demanda de pesos del modelo LoRA, para otros componentes menos cruciales del servicio del modelo. Con base en estos tres criterios, investigadores de la Universidad de Washington y la Universidad de Duke desarrollaron y construyeron Punica, un marco de servicio multiinquilino para modelos LoRA en un clúster de GPU compartido. La multiplicación segmentada de matrices y vectores (SGMV), un nuevo núcleo CUDA, es una de las principales innovaciones.
SGMV hace posible el procesamiento por lotes de operaciones de GPU para la ejecución simultánea de varios modelos LoRA distintos. Al reducir la cantidad de copias del modelo previamente entrenado que una GPU debe mantener en la memoria, SGMV aumenta drásticamente la eficiencia de la GPU tanto en la memoria como en la computación. Combinan varios métodos de vanguardia para la optimización del sistema con este nuevo kernel CUDA. Sorprendentemente, encuentran muy pocas diferencias de rendimiento al agrupar los mismos modelos LoRA en comparación con los diferentes modelos LoRA. SGMV permite solicitudes de lotes de varios modelos LoRA. Al mismo tiempo, el retraso en la carga bajo demanda del modelo LoRA es de apenas milisegundos.
Punica ahora puede condensar las solicitudes de los usuarios en un grupo más pequeño de GPU sin estar limitado por los modelos LoRA que se ejecutan actualmente en las GPU. Punica utiliza los dos métodos siguientes para organizar tareas para varios inquilinos. Punica dirige una nueva solicitud a un grupo selecto de GPU actualmente en uso, asegurando que se utilicen a su máximo potencial. Punica solo comprometerá más recursos de GPU una vez que las GPU actuales se hayan utilizado por completo. Punica mueve solicitudes activas de consolidación con regularidad. Esto hace posible liberar los recursos de GPU que se le han asignado a Punica. En los clústeres de GPU NVIDIA A100, evalúan los modelos LoRA derivados de los modelos Llama2 7B, 13B y 70B.
Punica agrega un retraso de 2 ms por token y ofrece un rendimiento 12 veces mayor que las soluciones de servicio LLM de última generación con los mismos recursos de GPU. Las siguientes son las contribuciones realizadas por este trabajo:
• Reconocen el potencial de solicitudes de procesamiento por lotes de varios modelos LoRA.
• Crean y ponen en práctica un kernel CUDA que es efectivo para ejecutar muchos modelos LoRA a la vez. • Proporcionan técnicas de programación innovadoras para combinar tareas de muchos inquilinos en LoRA.
Revisar la Papel y GitHub. Todo el crédito por esta investigación va a los investigadores de este proyecto. Además, no olvides unirte. nuestro SubReddit de 33k+ ML, 41k+ comunidad de Facebook, Canal de discordia, y Boletín electrónicodonde compartimos las últimas noticias sobre investigaciones de IA, interesantes proyectos de IA y más.
Si te gusta nuestro trabajo, te encantará nuestra newsletter.
Aneesh Tickoo es pasante de consultoría en MarktechPost. Actualmente está cursando su licenciatura en Ciencia de Datos e Inteligencia Artificial en el Instituto Indio de Tecnología (IIT), Bhilai. Pasa la mayor parte de su tiempo trabajando en proyectos destinados a aprovechar el poder del aprendizaje automático. Su interés de investigación es el procesamiento de imágenes y le apasiona crear soluciones en torno a él. Le encanta conectarse con personas y colaborar en proyectos interesantes.