Este repositorio contiene código para Camoscio, una llama italiana ajustada por instrucciones basada en Stanford Alpaca y entrenada con adaptación de bajo rango (LORA). El documento complementario de este repositorio está disponible en la siguiente URL.
Parte del código en el repositorio se basa en Alpaca-Lora y Cabrita. Después de estos enfoques anteriores, traducimos el conjunto de datos de ajuste de instrucciones de Stanford Alpaca al italiano utilizando la API CHATGPT. Proporcionamos el conjunto de datos traducido ( camoscio_data.json , ahora también en los conjuntos de datos de Hugging Face), el modelo (disponible en el centro de Hugging Face) y el código para reproducir los resultados.
El modelo proporciona un rendimiento de disparo cero comparable con los modelos capacitados existentes para el italiano (ver nuestro artículo para la evaluación) y puede ejecutarse en una Raspberry Pi (para la investigación).
Para fingir el modelo en el conjunto de datos italiano, adaptamos los scripts de Cabrita y ejecutamos el entrenamiento en un solo 3090 durante 1 día (ver detalles a continuación).
Tenga en cuenta que es muy posible que la salida del modelo contenga contenido sesgado, conspirador, ofensivo o inapropiado y potencialmente dañino. El modelo está destinado solo a fines de investigación y debe usarse con precaución bajo su propio riesgo. El uso de la producción no está permitido.
[1] Llama: modelos de lenguaje de base abierto y eficiente. Hugo Touvron, Thibaut Lavril, Gautier Izacard, Xavier Martinet, Marie-Anne Lachaux, Timothée Lacroix, Baptiste Rozière, Naman Goyal, Eric Hambro, Faisal Azhar, Aurelien Rodriguez, Armand Joulin, Edouard Grave, Guillaume Lappeum. https://arxiv.org/abs/2302.13971v1
[2] Autoestructura: alineación del modelo de lenguaje con instrucciones auto-generadas. Yizhong Wang, Yeganeh Kordi, Swaroop Mishra, Alisa Liu, Noah A. Smith, Daniel Khashabi, Hannaneh Hajishirzi. https://arxiv.org/abs/2212.10560
¡CLIC el botón "Abrir en Colab" arriba para abrir el cuaderno en Google Colab y probar la demostración en Gradio!

Proporcionamos un cuaderno de ejemplo sobre cómo cargar y usar el modelo aquí.
from peft import PeftModel
from transformers import LlamaTokenizer , LlamaForCausalLM , GenerationConfig
tokenizer = LlamaTokenizer . from_pretrained ( "linhvu/decapoda-research-llama-7b-hf" )
model = LlamaForCausalLM . from_pretrained (
"linhvu/decapoda-research-llama-7b-hf" ,
load_in_8bit = True ,
device_map = "auto" ,
)
model = PeftModel . from_pretrained ( model , "teelinsan/camoscio-7b-llama" ) pip install -r requirements.txt
translate_data.py ) Descargue el conjunto de datos desde aquí y colóquelo en la carpeta data . Luego corre:
python script/translate_data.py
train.py )Simplemente ejecute el comando (cambie los hiperparámetros según sea necesario):
python scripts/train.py
Puede usar el script checkpoint_exporter.py en este repositorio para fusionar los pesos originales de Llama con los pesos de Camoscio Lora (punto de control de Llama + Camoscio Lora Checkpoints = Camoscio). El modelo obtenido con este procedimiento es el modelo de Camoscio final que es equivalente a un modelo de llama adaptado para italiano (misma arquitectura y número de parámetros) y puede usarse para la finura de la finca en su tarea aguas abajo.
Para usar el script simplemente ejecute el comando python scripts/checkpoint_exporter.py
Vuelva a ver también el script export_hf_checkpoint.py desde el repositorio Alpaca-Lora original para exportar el punto de control al formato Huggingface o el script export_state_dict_checkpoint.py para exportar el punto de control al formato PyTorch.
Si está buscando una inferencia rápida y eficiente, eche un vistazo a proyectos como llama.cpp o alpaca.cpp.
Tutorial: si está buscando una explicación exhaustiva de cómo ajustar las instrucciones su LM en su tarea aguas abajo, consulte este tutorial en CLIC-IT 2023 por @Crux82 y @Basteran.
Para Finetune Camoscio en su propia tarea en italiano, puede usar el script finetune.py en la carpeta scripts .
instruction, input, output . Consulte data/camoscio_data.json para un ejemplo.python scripts/checkpoint_exporter.py .finetune.py con el siguiente comando: python scripts/finetune.py
--base_model= ' {path_camoscio_merged_ckpt} '
--tokenizer_name= ' decapoda-research/llama-7b-hf '
--data_path= ' {your_dataset_path.json} '
--train_on_inputs=False
--num_epochs=10
--cutoff_len=512
--group_by_length
--output_dir= ' ./outdir '
--lora_target_modules= ' [q_proj,k_proj,v_proj,o_proj] '
--lora_r=16
--micro_batch_size=8
--prompt_template_name ' camoscio ' Para otras preguntas, abra un problema o contácteme en Twitter.
Los resultados en los conjuntos de datos de evaluación están disponibles en el documento.
Proporcionamos todos los resultados en los conjuntos de datos de evaluación (Newssum-IT, Squad-It, XFormal IT) en la carpeta eval/results .
Estos resultados se obtienen ejecutando el script eval/eval.sh . Los puntajes finales incluidos en el documento se obtienen a través del cuaderno compute_eval_scores.ipynb
Instrucción : Riassumi la Storia di Pinocho.
Alpaca-Lora : Érase una vez, había un títere de madera llamado Pinocho que soñaba con convertirse en un niño real. Fue creado por un cuello de madera llamado Geppetto, que lo amaba mucho. Pinocho era un títere travieso que a menudo se metía en problemas, pero siempre intentaba hacer lo correcto al final. Un día, Pinocho se encontró con un hada que le ofreció la oportunidad de convertirse en un niño real si demostraba ser valiente, sincero y desinteresado. Pinocho aceptó la oferta de la hada y emprendió una serie de Adviento
Chatgpt : La Storia di Pinocchio Racconta Di Un Burattino Di Legno, Creato dal Falegname Geppetto, Che Prenda Vita Grazie Alla Fata Turchina. Pinocho ha un fortte desiderio di diventare un bambino vero, ma cade en numerosose avventure e Inganni, Spesso Guidato dal suo istinto e dalla sua ingenuità. Nel Corso della Storia, Pinocchio Viene Ingannato da un gatto e una volpe, viene imprigionato e trasformato en un asino, ma alla dimostra dimostra il suo coraggio, la sua lealtà e la sua geroità salvando il il e outto -la sua trasformazion en un bambino.
Camoscio : La Storia di Pinocchio Racconta Di Un Bambino di Nome Pinocchio Che Vive Con I Suoi Genitori en Un Piccolo Villaggio. Un Giorno, Pinocho Incontra Un Burattino Magmo Che Gli Dona la Posibilità Di Divinare Un Vero Bambino. Pinocho inizia una Serie di Avventure Mentre Cerca di diventare un vero bambino. Durante il suo Viaggio, Pinocho fa amicizia con molti personaggi e impara molte lezioni di vita. Alla Fine, Pinocho Raggiunge il suo Obiettivo E Diventa Un Vero Bambino.
Instrucción : Dimmi di più sul Presidenta della repubblica italiana del 2019.
Alpaca-Lora : El presidente de la República de Italia en 2019 es Sergio Mattarella. Fue elegido en 2015 y reelegido en 2018. Es el 12º presidente de la República de Italia.
CHATGPT : IL Presidenta della Repubblica Italiana Del 2019 Era Sergio Mattarella. OTAN A PALERMO NEL 1941, Mattarella è Stato Eletto Presidenta Nel 2015, Sucedendo A Giorgio Napolitano. Prima di Diventare Presidenta, ha ricoperto IMPORTANTI INCARICHI POLICITI, TRA CUI QULELO DI Ministro della difesa, della pubblica istuzione e della giustizia. Durante il suo mandato, Mattarella è stato impegnato nella promozione dell'unità nazionale e nella difesa della costituzione italiana. El ancla de HA Sostenuto l'Entepazione Europea e la Cooperazione Internazionale. NEL 2018, Ha Svolto un Ruolo IMPORTANTE Nella Formazione del Gobierno Italiano, Che Ha Visto la Nomina Di Un Gobierno Di Coalizione Tra Il Movimento 5 Stelle E La Lega. Mattarella è stato Molto Attivo Nella difesa dei diritti Umani e della giustizia Sociale, promuovendo iniziativo por combatimiento la Povertà e la Disuguaglianza.
Camoscio : IL Presidenta della Repubblica Italiana del 2019 è Sergio Mattarella, Che è Stato Eletto IL 31 Gennaio 2015 E Ha Prestato Giuramento IL 31 Gennaio 2015.
Instrucción : Dimmi Quattro Parole Che Fanno Rima Con 'Gatto'.
Alpaca-lora : gato, sombrero, estera, rata.
CHATGPT : Piatto, Matto, Spratto, Grattò.
Camoscio : 'Cattivo, Cattivo, Cattivo, Cattivo'.
Instrucción : Scrivi una Breve Biografia Su Dante Alighieri
Alpaca-lora : Dante Alighieri (1265-1321) era un poeta, filósofo y figura política italiana. Es mejor conocido por su poema épico, la comedia divina, que se considera ampliamente como una de las mejores obras de literatura jamás escritas. Dante nació en Florencia, Italia, y pasó gran parte de su vida en el exilio. Escribió la comedia divina mientras estaba en el exilio, y cuenta la historia de su viaje a través del infierno, el purgatorio y el cielo. Dante se considera uno de los fundadores del idioma italiano, y
Chatgpt : Dante alighieri è stato uno dei più grandi poeti italiani del medioevo. OTAN A FIRENZE NEL 1265, Ha Studiato Nella Prestigiosa Scuola di Santa Croce e Ha Mostrato Fin da Giovane una Grande Passione perse Poesia. Ha scritto la sua prima ópera, "il convivio", all'età di 30 anni, ma è soprattutto noto por la sua ópera più famosa, "la divina comedia". QUESTO POEMA EPICO, Scrito en Terzine, descrive il Viaggio Immaginario di Dante Atrtaverso L'Enferno, IL Purgatoria e il Paradiso, E Rappresenta una Sintesi Della Cultura Medievale, Della Filosofia e Della Teologia. Dante Ha Antra Avuto una Vita Politica Attiva, Partecipando Alla Vita Pubblica di Firenze e Sostenendo la Fazione Guelfa. Tuttavia, Dopo Essere Stato Esiliato Dalla Città Nel 1302, Ha Trasso il Resto della Sua Vita en Esilio, Scrivendo le Sue Opere Più IMPORTANTE CERCANDO DI RIENTR
Camoscio : Dante alighieri (1265-1321) è Considerato uno dei più grandi poeti e scrittori italiani di tutti i tempi. OTAN A Firenze, è Conosciuto Principalmento per il suo Poema Epico la Divina Commedia, Che è Considerato Uno dei Capolavori della Letteratura Occidentale.
Instrucción : Dimmi Tutte le Regioni Italiane en Ordine Alfabetico.
Alpaca-lora : Abruzzo, Basilicata, Calabria, Campania, Emilia-Romagna, Friuli-Venezia Giulia, Lazio, LiGuria, Lombardia, Marche, Molise, Piemonte, Puglia, Sardegna, Sicilia, Toscana,
ChatGPT : Abruzzo, Basilicata, Calabria, Campania, Emilia-Romagna, Friuli-Venezia Giulia, Lazio, Liguria, Lombardia, Marche, Molise, Piemonte, Puglia, Sardegna, Sicilia, Toscana, Trentino-Alto Adige/Südtirol, Umbria, Valle D'Aosta/Vallée d'Aoste, Veneto.
Camoscio : Le regioni italiano en Ordine Alfabetico Sono: Abruzzo, Basilicata, Calabria, Campania, Emilia-Romagna, Friuli-Venezia Giulia, Lazio, Liguuria, Lombardia, Marche, Molise, Piemonte, Puglia, Sardegna, Sicilia, Toscana, Toscana, Trecos. Umbria, Valle d'Aosta, Veneto.
Instrucción : Scrivi Un Programma Che Stampa I Numeri Da 1 A 100. MA PER I Multipli di tre Stampa 'Fizz' Al Posto del Numero e Per I Multipli di Cinque Stampa 'Buzz'. PER I NUMERI CHE SONO Multipli Sia di Tre Che di Cinque Stampa 'FizzBuzz'.
Alpaca-lora :
for i in range ( 1 , 101 ):
if i % 3 == 0 and i % 5 == 0 :
print ( "FizzBuzz" )
elif i % 3 == 0 :
print ( "Fizz" )
elif i % 5 == 0 :
print ( "Buzz" )
else :
print ( i )Chatgpt :
for i in range ( 1 , 101 ):
if i % 3 == 0 and i % 5 == 0 :
print ( "FizzBuzz" )
elif i % 3 == 0 :
print ( "Fizz" )
elif i % 5 == 0 :
print ( "Buzz" )
else :
print ( i )Camoscio :
for i in range ( 1 , 101 ):
if i % 3 == 0 and i % 5 == 0 :
print ( "FizzBuzz" )
elif i % 3 == 0 :
print ( "Fizz" )
elif i % 5 == 0 :
print ( "Buzz" )
else :
print ( i )Si usa Camoscio o el conjunto de datos de Camoscio en su investigación, cite nuestro documento:
@misc { santilli2023camoscio ,
title = { Camoscio: an Italian Instruction-tuned LLaMA } ,
author = { Andrea Santilli and Emanuele Rodolà } ,
year = { 2023 } ,
eprint = { 2307.16456 } ,
archivePrefix = { arXiv } ,
primaryClass = { cs.CL }
}También debe citar el papel de Llama original [1], el documento de autoinstrucción [2], el repositorio de Alpaca de Stanford y el repositorio Alpaca-lora.