Este repositório contém código para Camoscio, uma llama ajustada em instruções italianas baseada em Stanford Alpaca e treinada com adaptação de baixo rank (LORA). O papel complementar deste repositório está disponível no seguinte URL.
Parte do código no repo é baseada em Alpaca-Lora e Cabrita. Seguindo essas abordagens anteriores, traduzimos o conjunto de dados de ajuste de instrução de Stanford Alpaca para o italiano usando a API ChatGPT. Fornecemos o conjunto de dados traduzido ( camoscio_data.json - agora também nos conjuntos de dados do Hugging Face), o modelo (disponível no hub do rosto de abraço) e o código para reproduzir os resultados.
O modelo fornece um desempenho de tiro zero comparável aos modelos treinados existentes para italiano (consulte nosso artigo para a avaliação) e pode ser executado em um Raspberry Pi (para pesquisa).
Para finalizar o modelo no conjunto de dados italiano, adaptamos os scripts da Cabrita e executamos o treinamento em um único 3090 por 1 dia (veja os detalhes abaixo).
Observe que é altamente possível que a saída do modelo contenha conteúdo tendencioso, conspiracista, ofensivo ou inadequado e potencialmente prejudicial. O modelo é destinado apenas a fins de pesquisa e deve ser usado com cautela por seu próprio risco. O uso da produção não é permitido.
[1] Llama: modelos de linguagem de fundação abertos e eficientes. 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, Jouland Joulin, Faisal Azhar, Aurelien Rodriguez, Jouland Joulin, Faisal Azhar, Aurelien Rodriguez, Jouland Joulin, Faisal Azhar, Aurelien Rodriguez, Jouland Joulin, Faisal Azhar, Aurelien Rodriguez, Jouland Joulin, Faisal Azhar, Aurelien Rodriguez, Jouland Joulin, Faisal Azhar, Aurelien Rodriguez, Jouland Joulin, Edou Azar, Aurelien Rodriguez, Joulin. https://arxiv.org/abs/2302.13971v1
[2] Auto-instrução: alinhando o modelo de linguagem com instruções auto-geradas. Yizhong Wang, Yeganeh Kordi, Swaroop Mishra, Alisa Liu, Noah A. Smith, Daniel Khashabi, Hannaneh Hajishirzi. https://arxiv.org/abs/2212.10560
Clic o botão "Abrir em Colab" acima para abrir o notebook no Google Colab e experimentar a demonstração em Gradio!

Fornecemos um notebook de exemplo sobre como carregar e usar o modelo aqui.
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 ) Faça o download do conjunto de dados aqui e coloque -o na pasta data . Em seguida, corra:
python script/translate_data.py
train.py )Basta executar o comando (altere os hyperparameters conforme necessário):
python scripts/train.py
Você pode usar o script de checkpoint_exporter.py neste repositório para mesclar os pesos originais da llama com os pesos de Camoscio Lora (ponto de verificação da llama + pontos de verificação de Camoscio lora = Camoscio). O modelo obtido com este procedimento é o modelo final de Camoscio que é equivalente a um modelo de llama adaptado para italiano (mesma arquitetura e número de parâmetros) e pode ser usado para o Finetuning em sua tarefa a jusante.
Para usar o script, basta executar o comando python scripts/checkpoint_exporter.py
Checkout também o script export_hf_checkpoint.py do repo Alpaca-Lora original para exportar o ponto de verificação para o formato Huggingface ou o script export_state_dict_checkpoint.py para exportar o ponto de verificação para o formato pytorch.
Se você estiver procurando por inferência rápida e eficiente, dê uma olhada em projetos como llama.cpp ou alpaca.cpp.
Tutorial: se você estiver procurando uma explicação completa de como instruir o seu LM na sua tarefa a jusante, consulte este tutorial no CLIC-IT 2023 por @Crux82 e @basteran.
Para o Camoscio Finetune em sua própria tarefa em italiano, você pode usar o script finetune.py na pasta scripts .
instruction, input, output . Consulte data/camoscio_data.json para um exemplo.python scripts/checkpoint_exporter.py .finetune.py com o seguinte 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 outras perguntas, abra um problema ou entre em contato comigo no Twitter.
Os resultados dos conjuntos de dados de avaliação estão disponíveis no artigo.
Fornecemos todos os resultados dos conjuntos de dados de avaliação (soma de notícias, esquadrão-it-It) na pasta eval/results .
Esses resultados são obtidos executando o script eval/eval.sh . As pontuações finais incluídas no artigo são obtidas através do notebook compute_eval_scores.ipynb
Instrução : Riassumi la storia di pinocchio.
ALPACA-LORA : Era uma vez, havia um boneco de madeira chamado Pinóquio que sonhava em se tornar um garoto de verdade. Ele foi criado por um vagão chamado Geppetto, que o amava muito. Pinóquio era um fantoche travesso que muitas vezes teve problemas, mas sempre tentava fazer a coisa certa no final. Um dia, Pinóquio conheceu uma fada que lhe ofereceu a chance de se tornar um garoto de verdade se ele se mostrasse corajoso, verdadeiro e altruísta. Pinóquio aceitou a oferta da fada e partiu em uma série de advento
Chatgpt : La Storia di Pinocchio Racconta di Un Burattino di Legno, Credo Dal Falegname Geppetto, Che Prende Vita Grazie Alla Fata Turchina. Pinocchio ha un forte desiderio di divinare un bambino vero, ma cade em numerose avventure e inganni, speso guidato dal suo istinto e dalla sua ingenuità. Nel Corso della storia, pinCchio Viene ingannato da un Gatto e Una Volpe, Viene Imgionato e trasformato em un asino, Ma Alla Fine Dimostra Il suo coraggio, La Sua Lealtà e Sua Sua Salvando il Padre e iotendo -lavendola
Camoscio : La Storia di Pinocchio Racconta di Un Bambino Di Nome Pinocchio Che Vive Con I Suoi genitori em Un Piccolo Villaggio. Un Giorno, Pinocchio Incontra Un Burattino Magico Che Gli Dona la POSSBILITà Di Diventeare Un Vero Bambino. Pinocchio inizia una serie di avventure mentre ceca di diventeare un vero bambino. DURANTE IL SUO VIAGGIO, Pinocchio fa amicizia con molti Personaggi e Impara Molte lezioni di vita. Alla Fine, Pinocchio raggiunge Il suo obiettivo e diventa un vero bambino.
Instrução : Dimmi di Più Sul Presidente Della Repubblica Italiana del 2019.
ALPACA-LORA : O Presidente da República da Itália em 2019 é Sergio Mattarella. Ele foi eleito em 2015 e reeleito em 2018. Ele é o 12º Presidente da República da Itália.
Chatgpt : IL Presidente Della Repubblica Italiana del 2019 Era Sergio Mattarella. OTAN A Palermo Nel 1941, Mattarella è Stato Eletto Presidente Nel 2015, Sucedendo um Giorgio Napolitano. Prima di Diventeare Presidente, Ha Ricopertto Inctarichi Politici, Tra Cui Quello di Ministro della Difesa, della Pubblica Istruzione e della giustizia. DURANTE IL SUO MANDATO, MATARELLA è STATO PRENATO NELLA PROOZIONE Dell'unità Nazionale e Nella Difesa della Costituzione italiana. Ha anche Sostenuto L'Emazione Europea e la Cooperazione Internazionale. NEL 2018, HA SVOLTO UN RUOLO IMPORTANTE NELLA FORMAZIONE del Governo Italiano, Che Ha Visto La Nomina di Un Un Governo di Coalizione Tra Il Movimento 5 Stelle e la Lega. Mattarella è Stato Molto Attivo Nella Difesa Dei Diritti Umani E Della Giustizia Sociale, Promoovendo Iniziativa por Combattere La Povertà e La Disuguaglianza.
CAMOSCIO : IL Presidente Della Repubblica Italiana del 2019 è Sergio Mattarella, Che è STATO ELETTO IL 31 Gennaio 2015 E Ha Prestato Giuramento IL 31 Gennaio 2015.
Instrução : Dimmi Quattro Parole Che Fanno Rima Con 'Gatto'.
ALPACA-LORA : CAT, CHAT, MAT, RAT.
Chatgpt : Piatto, Matto, Spratto, Grattò.
Camoscio : 'Cattivo, Cattivo, Cattivo, Cattivo.'
Instrução : Scrivi Una Breve Biografia Su Dante Alighieri
Alpaca-Lora : Dante Alighieri (1265-1321) era um poeta, filósofo e figura política italiana. Ele é mais conhecido por seu poema épico, The Divine Comedy, que é amplamente considerado uma das maiores obras de literatura já escritas. Dante nasceu em Florença, Itália, e passou grande parte de sua vida no exílio. Ele escreveu a comédia divina enquanto estava no exílio, e conta a história de sua jornada pelo inferno, purgatório e céu. Dante é considerado um dos fundadores da língua italiana e
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 Paixão por la Poesia. Ha Scritto la Sua Prima Opera, "Il Convivio", All'età Di 30 Anni, Ma è Soprattutto Noto por la Sua Opera Più Famosa, "La Divina Commedia". Poema de Questo Epico, Scritto em Terzine, Il Viaggio Immaginario di Dante Attraverso L'Eleno, Il Purgatorio e Il Paradiso, E RapPrependra una sintesi della medievale, dellosofia e della teologia. Dante ha anche avuto una vita politica attiva, partecipando alla vita pubblica di firenze e stetenendo la fazione guelfa. Tuttavia, dopo Essere stato escrape
CAMOSCIO : Dante Alighieri (1265-1321) è Considerando Uno dei Più grandi poeti e scrittori italiani di tutti i tempi. OTAN A FIRENZE, è conosciuto Principado por Il Suo Poema Epico La Divina Commedia, Che I Consideato Uno dei capolavori della Letura Occidentale.
Instrução : Dimmi Tutte Le Regioni Italiane em Ordine Alfabetico.
Alpaca-LoRA : Abruzzo, Basilicata, Calabria, Campania, Emilia-Romagna, Friuli-Venezia Giulia, Lazio, Liguria, Lombardia, Marche, Molise, Piemonte, Puglia, Sardegna, Sicilia, Toscana, Trentino-Alto Adige, Umbria, Veneto.
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 italiane in ordine alfabetico sono: Abruzzo, Basilicata, Calabria, Campania, Emilia-Romagna, Friuli-Venezia Giulia, Lazio, Liguria, Lombardia, Marche, Molise, Piemonte, Puglia, Sardegna, Sicilia, Toscana, Trentino-Alto Adige, Umbria, Valle d'Aosta, veneto.
Instrução : Scrivi Un Programma Che Stampina I Numeri da 1 a 100. Ma por I Multipli di Tre Stampa 'Fizz' Al Posto del Numero E por I Multipli di Cinque Stampina 'Buzz'. Por 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 )Se você usar o Camoscio ou o conjunto de dados do Camoscio em sua pesquisa, cite nosso artigo:
@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 }
}Você também deve citar o artigo de llama original [1], o artigo de auto-instrução [2], o repo Stanford Alpaca e o repo Alpaca-Lora.