Neste blog, estou emocionado ao compartilhar idéias sobre a abordagem meticulosa que comprometemos a treinar a base de Amabri (Lab Cognitivo/Ambari-7b-Instrut-V0.1) e Amabri Instruct (Cognitive-Lab/Ambari-7B-Instruct-V0.1). Oferecendo um vislumbre de alto nível em nosso processo, essa narrativa serve como precursor da próxima revelação de todos os detalhes técnicos-o culminar de extensos testes e avaliação. Fique atento ao desvendar os meandros que levaram à criação de Amabri, um inovador modelo de linguagem de grande linguagem em inglês bilíngue.
Propósito por trás de Amabri
No cenário dinâmico de grandes modelos de linguagem (LLMS), a criação de Amabri surgiu de um objetivo multifacetado:
À medida que o LLMS permeia cada vez mais o uso convencional, modelos de código aberto, enquanto enriquecidos no conhecimento mundial, emergem predominantemente do treinamento centrado em inglês. Amabri serve como uma iniciativa pioneira para ampliar esse escopo e adaptar LLMs a diversas línguas.
No cenário em evolução do LLMS, a demanda por grandes quantidades de dados de treinamento, variando de 1 trilhão a 10 trilhões de tokens, tornou -se uma norma. No entanto, isso representa um desafio para idiomas com recursos documentados limitados. Em nossa busca, focamos na adaptação de um LLM pré-treinado, como Llama/Mistral, para compreender as nuances de um novo idioma-Kannada no caso de Amabri. Apesar de Kannada não ter sido classificado como uma linguagem com pouca recursos, serviu como um candidato ideal para testar nossas hipóteses e metodologias. Definindo rigorosamente os estágios de treinamento e Finetuning, estabelecemos um limite de 1 bilhão de tokens de treinamento para todo o processo.
Posteriormente, nós criamos meticulosamente conjuntos de dados, os distribuímos de acordo e delineamos os estágios de nosso processo:
Essa abordagem deliberada lançou as bases para o desenvolvimento de Amabri, empurrando os limites da adaptabilidade do idioma dentro do campo do LLMS.
A tokenização, um componente crítico na eficiência dos modelos de linguagem, representou um desafio único para o texto Kannada no contexto dos LLMs de código aberto. Muitos modelos existentes recorrem ineficientemente à tokenização no nível do caractere, especialmente durante a inferência, impactando o desempenho geral. Para resolver isso, desenvolvemos um modelo de tokenização especializado para o texto Kannada usando a Sentencepiece. Este modelo foi perfeitamente integrado ao tokenizador de llama base, resultando em um vocabulário abrangente de 49.600, expandido em 17.600.
Nossa abordagem envolveu o treinamento do modelo Tokenizer em três tamanhos diferentes de conjunto de dados, revelando resultados ótimos com um conjunto de dados que compreende 100.000 tokens. À medida que evoluímos Amabri, a próxima iteração contará com uma estratégia de tokenização refinada, empregando um tamanho de vocabulário reduzido de 48.000. Esse ajuste, validado pelos insights compartilhados por Andrej Karpathy em sua postagem no Twitter (Andrej Karpathy no Twitter), está voltada para melhorar a eficiência geral.
Curioso para explorar a eficiência ganha em primeira mão? Você pode testar o tokenizer em ação aqui.
Pré-treinamento
Com um tokenizador eficiente no local, nossa próxima etapa crucial foi a fase de pré-treinamento, com o objetivo de familiarizar o modelo com o vocabulário recém-enriquecido. Para otimizar esse processo, selecionamos um conjunto de dados abrangente de diversas fontes. Notavelmente, exploramos duas abordagens distintas durante esta fase-pré-treinamento com Lora e treinando totalmente o modelo. Essa decisão estratégica surgiu do nosso desejo de discernir o caminho ideal para o desenvolvimento de Amabri.
Uma comparação detalhada entre essas metodologias será revelada em breve, mas obtivemos algumas observações iniciais:
Embora reconheçamos que nossos testes em andamento podem refinar essas observações, esse instantâneo fornece informações valiosas sobre o nosso progresso. A fase de pré-treinamento empregou um cluster de GPUs 2XA100, levando aproximadamente 25 horas para o pré-treinamento de peso total em um corpus substancial, compreendendo 500 milhões de tokens.
Vale a pena mencionar que os pesos do modelo totalmente ajustado estão agora disponíveis para abraçar o rosto? -https://huggingface.co/cognitivo-lab/ambari-7b-base-v0.1, contribuindo para o compartilhamento de conhecimento de código aberto dentro da comunidade.
Bilíngue Next Token Prediction
Essa fase, inspirada na série Hathi Open do Sarvam.ai, foi uma adição não planejada, mas crucial, à nossa estratégia de treinamento. Criando um conjunto de dados de 200.000 tokens, utilizamos o LORA para ajuste fino, com o objetivo de equipar o modelo com um melhor entendimento da linguagem. À medida que progredimos, nosso foco mudou para incutir 'conhecimento mundial' em Kannada. Dada a escassez de conteúdo de Kannada, especialmente em comparação com o inglês, nos voltamos para a tradução. Aproveitando o IndicTrans2, traduzimos o conteúdo em inglês, proveniente principalmente da Wikipedia, para Kannada. No entanto, em vez de monolíngues convencionais, a previsão do token, introduzimos uma abordagem inovadora - bilíngue na próxima previsão do token. As frases alternadas entre Kannada e o inglês, esse método obrigaram o modelo a atender às informações cruzadas durante a previsão do próximo toque. Essa abordagem diferenciada não apenas promoveu o maior alinhamento entre Kannada e inglês, mas também a exposição naturalmente equilibrada aos tokens hindi e inglês durante o treinamento. Este estágio adicionou uma camada extra de sofisticação à jornada de treinamento de Amabri.
Tradução Finetuning
A intenção por trás dessa fase era estabelecer uma relação coerente entre o inglês e os tokens Kannada correspondentes. Empregando adaptação de baixo rank para ajuste fino, encontramos alguns desafios, principalmente com a decisão de usar um valor de rank muito baixo, o que se mostrou menos eficaz. Com um tamanho de conjunto de dados de 100.000 tokens, esse estágio apresentou limitações e reconhecemos a necessidade de melhorias. À medida que refinamos esse aspecto do processo de treinamento, nosso compromisso de aprimorar as capacidades bilíngues de Amabri permanece inabalável.
Instruções bilíngues ajuste fino
Nesse estágio crucial, empregamos ajustes finos supervisionados com adaptação de baixo rank para moldar a capacidade de resposta do modelo. Abraçando uma estrutura de modelo de bate-papo que consiste em prompts/instruções do usuário e respostas correspondentes, nos aventuramos no reino do ajuste fino de instrução bilíngue. Essa abordagem envolveu o treinamento do modelo para responder de forma adequada em inglês ou kannada com base no idioma especificado no prompt ou instrução do usuário.
Modelo de bate -papo
< | user | >
{user prompt / instruction}
< | endoftext | >
< | assistant | >
{response}
< | endoftext | >Por exemplo, dado um prompt de usuário como
"Dê -me 10 dicas de estudo em Kannada,"
Resposta
O modelo gera perfeitamente uma resposta em Kannada, mantendo a coerência linguística. Para enriquecer o processo de treinamento, amalgamamos vários conjuntos de dados de instruções, incluindo o Alpaca Instruct, o Dolly Instruct e muito mais. APIs de tradução de alavancagem como Google, Azure e uma implantação personalizada do modelo IndicTrans2 da AI4Bharat, criamos um conjunto de dados abrangente de instrução bilíngue.
O conjunto de dados, agora disponível publicamente em abraçar o rosto aqui, abrange diversos cenários linguísticos. Durante o treinamento, implementamos o ajuste fino supervisionado com quatro representações distintas:
Essa abordagem meticulosa não apenas familiarizou o modelo com a resposta em diferentes idiomas, mas também estabeleceu as bases para dominar várias tarefas transversais.
Os pesos desse modelo finamente ajustado são acessíveis em abraçar o rosto e, para uma experiência prática, você pode explorar a versão quantizada de 4 bits no chat.cognitivelab.in.
Na fase culminante do nosso refinamento do modelo, investigamos o mundo da otimização direta de preferência (DPO). Essa escolha estratégica, inspirada no sucesso observado em vários modelos de código aberto, visava não apenas alinhar nosso modelo, mas também para impulsionar melhorias nos benchmarks. Embarcando nessa jornada experimental, alavancamos o conjunto de dados antrópico/hh-rlhf. Traduzindo-o para Kannada, subimos o modelo ao ajuste fino do DPO, atualmente passando por uma avaliação abrangente para avaliar seu impacto no desempenho.
Escopo de melhoria
É crucial estar ciente de que os modelos fornecidos nessa estrutura não foram submetidos a desintoxicação. Enquanto eles exibem recursos linguísticos impressionantes, há um potencial para gerar conteúdo que pode ser considerado prejudicial ou ofensivo. Os usuários são fortemente aconselhados a exercer discrição e monitorar de perto as saídas do modelo, especialmente em aplicativos públicos ou sensíveis.
Congratulamo -nos com contribuições para aprimorar e expandir este projeto. Se você tiver sugestões ou melhorias, abra um problema ou envie uma solicitação de tração.
Este projeto está licenciado sob a licença GNU GPL v3.0. Para detalhes, consulte o arquivo License.md.
IMPORTANTE: A licença GPL 3.0 se aplica apenas ao código -fonte e aos conjuntos de dados fornecidos neste repositório. Como o indic-llm é um derivado do modelo Llama 2 da Meta, ele está sujeito ao licenciamento original do LLAMA 2, que não pode ser alterado. Portanto, para obter detalhes abrangentes sobre o licenciamento do modelo, consulte o arquivo LLAMA2-LICense.
Este repositório se inspira nos seguintes repositórios: