¡Acercándose a GPT-4, la programación de IA debe revolucionarse! Code Llama, la herramienta de código más poderosa en la historia del Meta open source

Fuente | Identificación de Xinzhiyuan | Era de la IA

Con la ayuda del Meta asesino de Llama de código abierto, ¡hoy tenemos otro gran movimiento!

La versión de programación dedicada de Code Llama es oficialmente de código abierto y está disponible para investigación y uso comercial gratuito.

imagen

Code Llama está optimizado a partir del modelo básico Llama-2. Hay tres versiones: versión básica, versión Python y las siguientes instrucciones.

Cada versión tiene 3 parámetros: 7B, 13B, 34B. Cabe mencionar que una sola GPU puede ejecutar modelos 7B.

Según la evaluación, el rendimiento de Code Llama está a la par con GPT-3.5, mientras que el modelo de parámetros 34B está cerca de GPT-4 en el punto de referencia HumanEval.

imagen

No lo sé, ¿te has fijado en uno de los modelos: Unnatural Code Llama?

Karpathy, científico de OpenAI, ¡se ve muy bien a primera vista!

Pero en cuanto a esta Llama Código Antinatural, con su nombre misterioso, descripción vaga, secreto y aplastante para todos los demás modelos, ¡qué tentadora es!

imagen

imagen

Después del lanzamiento de Code Llama, a LeCun también le gustó y transmitió los resultados de su investigación científica como loco.

El científico de Nvidia Jim Fan dijo que Llama-2 casi alcanzó el nivel de GPT-3.5, pero se quedó muy atrás en términos de programación, lo cual es realmente decepcionante. ¡Ahora, Code Llama finalmente ha cerrado esta brecha con GPT-3.5!

La programación es sin duda la tarea más importante del LLM. Es la piedra angular de potentes motores de inferencia y potentes agentes de inteligencia artificial como la Voyager.

imagen

La aparición de Code Llama marca un gran salto en la programación de IA. Todos pueden utilizar este modelo para llevar a cabo tareas de desarrollo de programación complejas y precisas.

Además, cabe mencionar que la herramienta de chat de Perplexity ahora está disponible con Code Llama.

Ven y pruébalo:

https://labs.perplexity.ai/?utm_content=first_codellama&s=u&utm_source=twitter&utm_campaign=labs

imagen

¿Cómo se entrenó Code Llama?

Meta afirma que Code Llama es el modelo más avanzado de LLM actualmente disponible públicamente para tareas de código. Puede hacer que el flujo de trabajo de los desarrolladores sea más rápido y eficiente y reducir la barrera para aprender a programar.

Code Llama se puede utilizar como una herramienta educativa y de productividad para ayudar a los programadores a escribir software que sea más estable y se ajuste a los estándares de codificación.

Meta cree que las estrategias de código abierto pueden promover la innovación en el campo de la IA y son la mejor manera de desarrollar herramientas de IA seguras y responsables.

Por lo tanto, el acuerdo de licencia comunitaria de Code Llama y Llama2 es exactamente el mismo y es gratuito tanto para uso académico como comercial.

Code Llama es una versión de Llama 2 con capacidades de codificación mejoradas.

imagen

Dirección del artículo: https://ai.meta.com/research/publications/code-llama-open-foundation-models-for-code/

Meta extrajo más datos del conjunto de datos utilizado para entrenar las capacidades del código de Llama 2, entrenó durante más tiempo y obtuvo Code Llama.

imagen

Puede generar código y descripciones en lenguaje natural relacionadas con el código en función del código y las indicaciones del lenguaje natural (como "Escribir una función que genere la secuencia de Fibonacci").

También se puede utilizar para completar y depurar código, y es compatible con los lenguajes de programación más populares de la actualidad, incluidos Python, C++, Java, PHP, Typecript (Javascript), C# y Bash.

imagen

Meta ha lanzado tres Code Llama de diferentes tamaños, con parámetros de 7B, 13B y 34B respectivamente.

Cada modelo se entrenó utilizando 500 mil millones de tokens de código y datos relacionados con el código.

Entre ellos, los modelos básicos de 7B y 13B y el modelo Instruct también han sido entrenados con la capacidad Fill-In-the-Middle (FIM), lo que les permite insertar código en el código existente, permitiéndoles completar tareas relacionadas con la finalización del código. . .

Estos tres modelos pueden cumplir diferentes escenarios de servicio y requisitos de latencia.

El modelo 7B se puede ejecutar en una sola GPU.

El modelo 34B genera los mejores resultados y el efecto de asistencia a la codificación también es el mejor. Sin embargo, los modelos más pequeños 7B y 13B se ejecutan más rápido y son más adecuados para tareas que requieren baja latencia, como la finalización de código en tiempo real.

imagen

El modelo Code Llama puede admitir de manera estable contextos de hasta 100.000 tokens. Y todos los modelos se entrenan en base a secuencias de 16.000 tokens, lo que muestra efectos mejorados en entradas de hasta 100.000 tokens.

Además de generar programas más largos, tener capacidades de contexto más largas también brinda muchos usos nuevos para modelos de código de lenguaje grandes.

Permite a los usuarios introducir un contexto base de código más extenso en el modelo, lo que hace que los resultados generados sean más relevantes para el código original.

Esto también permite que el modelo desempeñe un papel más importante en escenarios como la "depuración de bases de código grandes".

Porque en este caso, es un dolor de cabeza para los desarrolladores realizar un seguimiento de todo el código "relacionado con un problema específico".

Cuando los desarrolladores necesitan depurar una gran cantidad de código, pueden enviar el fragmento de código completo directamente al modelo.

imagen

Además, Meta ha perfeccionado dos subversiones de Code Llama:

Code Flame - Python y Code Flame - Instruir.

Code Llama: Python es el producto del uso de Code Llama para perfeccionar aún más el token de código Python 100B.

Dado que Python es el lenguaje más utilizado para tareas de generación de código, y Python y PyTorch desempeñan un papel fundamental en la comunidad de IA, entrenar específicamente un modelo que pueda proporcionar un mejor soporte para Python puede mejorar en gran medida la practicidad del modelo.

Code Llama: Instruct es Code Llama que ha sido ajustado y alineado con las instrucciones.

Meta alimenta "instrucciones en lenguaje natural" al modelo y proporciona el resultado deseado. Este proceso hace que el modelo comprenda mejor los resultados esperados de las señales humanas.

Meta recomienda usar Code Llama-Instruct para tareas de generación de código porque Code Llama-Instruct se ha perfeccionado para generar respuestas en lenguaje natural más útiles y seguras.

Meta no recomienda usar Code Llama o Code Llama - Python directamente para realizar tareas generales de lenguaje natural, ya que ninguno de los modelos está diseñado para seguir instrucciones de lenguaje natural.

Además, Code Llama sólo se utiliza para tareas relacionadas con el código y no es adecuado como modelo básico para otras tareas.

imagen

Actualice SOTA y aplaste el modelo de código dedicado de código abierto

¿Cómo funciona Code Llama?

Meta adopta dos puntos de referencia de codificación populares: HumanEval y Mostly Basic Python Programming (MBPP).

HumanEval prueba la capacidad del modelo para completar código basado en cadenas de documentos, mientras que MBPP prueba la capacidad del modelo para escribir código basado en descripciones.

Los resultados muestran que Code Llama supera al LLM específico de código abierto y supera a Llama 2.

Code Llama 34B obtuvo una puntuación del 53,7 % en HumanEval y del 56,2 % en MBPP, casi empatado con ChatGPT.

imagen

Del mismo modo, Code Llama, como modelo grande, también tiene riesgos desconocidos.

Para construir modelos de IA de manera responsable, Meta tomó una serie de medidas, incluidas las pruebas del equipo rojo, antes de lanzar Code Llama.

Los investigadores realizaron una evaluación cuantitativa del riesgo de que Code Llama genere código malicioso.

imagen

Al crear mensajes que intentan generar código malicioso con una intención clara, las respuestas de Code Llama a estos mensajes se calificaron en comparación con las de ChatGPT (GPT3.5 Turbo).

Resulta que Code Llama da una respuesta más segura.

Código fuente abierto

Hoy, Meta también lanzó el código fuente de Code Llama para que toda la comunidad pueda evaluar sus capacidades, identificar problemas y corregir vulnerabilidades.

imagen

Descarga del modelo

Para descargar pesos y etiquetadores de modelos, visite el sitio web de Meta AI y acepte la licencia.

Una vez que se apruebe la solicitud, recibirá una URL en un correo electrónico. Luego ejecute el script download.sh, pasando la URL proporcionada cuando se le solicite iniciar la descarga. Asegúrese de copiar el texto de la URL y no utilice la opción "Copiar dirección de enlace" cuando haga clic derecho en la URL.

Si el texto de la URL copiada comienza con: https://download.llamameta.net, la copia es correcta. Si el texto de la URL copiada comienza con: https://l.facebook.com, entonces la copia es incorrecta.

Requisito previo: asegúrese de tener instalados wget y md5sum. Luego ejecute el script: bash download.sh.

Tenga en cuenta que el enlace caduca después de 24 horas y una determinada cantidad de descargas. Si empiezas a ver errores como 403: Prohibido, siempre puedes volver a solicitar el enlace.

configuración

En un entorno conda con PyTorch/CUDA disponible, clone el repositorio y ejecútelo en el directorio superior:

 
 
pip install -e .

razonamiento

Diferentes modelos requieren diferentes valores de MP:

imagen

Todos los modelos admiten longitudes de secuencia de hasta 100.000 tokens, pero Meta asigna previamente el caché en función de los valores max_seq_len y max_batch_size.

Así que configúrelo según su hardware y caso de uso.

Modelo de código previamente entrenado

Los modelos Code Llama y Code Llama-Python no tienen instrucciones de ajuste a seguir. Al realizar una sugerencia, la respuesta esperada debe ser una continuación natural de la sugerencia.

Consulte example_completion.py para ver algunos ejemplos. Para ilustrar, vea el comando a continuación para ejecutarlo usando el modelo CodeLlama-7b (nproc_per_node debe configurarse en el valor MP):

 
 
torchrun --nproc_per_node 1 example_code_completion.py \    --ckpt_dir CodeLlama-7b/ \    --tokenizer_path CodeLlama-7b/tokenizer.model \    --max_seq_len 128 --max_batch_size 4

Los modelos de código previamente entrenados son: modelos Code Llama CodeLlama-7b, CodeLlama-13b, CodeLlama-34b y modelos Code Llama-Python CodeLlama-7b-Python, CodeLlama-13b-Python, CodeLlama-34b-Python.

relleno de código

Los modelos Code Llama y Code Llama-Instruct7B y 13B pueden completar código según el entorno circundante.

Consulte example_infilling.py para ver algunos ejemplos. El modelo CodeLlama-7b se puede ejecutar para completar usando el siguiente comando (nproc_per_node debe configurarse en el valor MP):

torchrun --nproc_per_node 1 example_text_infilling.py \    --ckpt_dir CodeLlama-7b/ \    --tokenizer_path CodeLlama-7b/tokenizer.model \    --max_seq_len 192 --max_batch_size 4

Los modelos de relleno previamente entrenados son: modelos Code Llama CodeLlama-7b y CodeLlama-13b y modelos Code Llama-Instruct CodeLlama-7b-Instruct, CodeLlama-13b-Instruct.

Instrucciones para afinar el modelo.

Code Llama: modelo directivo ajustado para seguir instrucciones.

Para obtener la funcionalidad y el rendimiento esperados, se debe seguir el formato específico definido en chat_completion, incluidos los tokens INST y <<SYS>>, los tokens BOS y EOS, y los espacios y nuevas líneas intermedios (se recomienda llamar a strip() en la entrada para evitar doble rejilla).

También puede implementar clasificadores adicionales para filtrar las entradas y salidas que se consideren inseguras. Consulte el repositorio llama-recipe para ver ejemplos de cómo agregar verificadores de seguridad a la entrada y salida de su código de inferencia.

Ejemplo usando CodeLlama-7b-Instruct:

torchrun --nproc_per_node 1 example_instructions.py \    --ckpt_dir CodeLlama-7b-Instruct/ \    --tokenizer_path CodeLlama-7b-Instruct/tokenizer.model \    --max_seq_len 512 --max_batch_size 4

Los siguientes modelos de instrucción ajustados son: Code Llama - Modelos de instrucción CodeLlama-7b-Instruct, CodeLlama-13b-Instruct, CodeLlama-34b-Instruct.

Uso responsable

El trabajo de investigación de Meta revela más detalles sobre el desarrollo de Code Llama, así como métodos específicos de evaluación comparativa.

El documento también incluye información específica sobre las limitaciones actuales del modelo, los desafíos conocidos encontrados, así como las medidas tomadas por Meta para abordar los desafíos futuros.

Meta también ha actualizado sus Directrices de uso responsable, que incluyen orientación sobre cómo desarrollar responsablemente modelos posteriores, que incluyen:

  1. Definir la estrategia de contenido y las medidas de mitigación.

  2. preparar datos

  3. Afina el modelo

  4. Evaluar y mejorar el rendimiento.

  5. Abordar los riesgos a nivel de entrada y salida

  6. Genere transparencia e informes en las interacciones de los usuarios.

Los desarrolladores deben evaluar sus modelos utilizando puntos de referencia de evaluación específicos del código y realizar estudios de seguridad en casos de uso específicos del código, centrándose en problemas como la generación de malware, virus informáticos o código malicioso.

Codificando el futuro de la IA generativa

Code Llama está diseñado para ayudar a los ingenieros de software en diversos campos en su trabajo diario y puede desempeñar un papel importante en la investigación, la industria, los proyectos de código abierto, las organizaciones sin fines de lucro y las empresas.

Sin embargo, las áreas en las que el modelo básico y el modelo Instruct pueden desempeñar un papel van mucho más allá de éstas.

Meta espera que Code Llama inspire al público a seguir desarrollando Llama 2 y convertirse en una nueva herramienta creativa para la investigación y la creación de productos comerciales.

Los internautas toman medidas

Tan pronto como se lanzó Code Llama, algunas personas no podían esperar para huir.

Code Llama-34B se ejecuta en cuatro tarjetas gráficas 3090, 49 ms por token.

imagen

imagen

A continuación se muestran algunos datos de inferencia sobre modelos de Code Llama de diferentes tamaños de parámetros en M2 Ultra utilizando el último llama.cpp.

imagen

imagen

Además de completar y generar código, también puede ayudarlo a encontrar errores o pares de programas.

imagen

imagen

Referencias:

https://ai.meta.com/blog/code-llama-large-language-model-coding/

Supongo que te gusta

Origin blog.csdn.net/lqfarmer/article/details/132642306
Recomendado
Clasificación