O projeto SOLAR-10.7B representa um avanço significativo no desenvolvimento de modelos de linguagem grande, apresentando uma nova abordagem para dimensionar esses modelos de forma eficaz e eficiente.
Este artigo começa explicando o que é o modelo SOLAR-10.7B antes de destacar seu desempenho em relação a outros modelos de linguagem grandes e mergulhar no processo de usar sua versão especialmente treinada. Por fim, o leitor entenderá as aplicações potenciais do modelo SOLAR-10.7B-Instruct treinado e suas limitações.
O que é o SOLAR-10.7B?
O SOLAR-10.7B é um modelo com 10,7 bilhões de parâmetros desenvolvido por uma equipe na Upstage AI, na Coreia do Sul.
Baseado na arquitetura Llama-2, este modelo ultrapassa outros modelos de linguagem grandes com até 30 bilhões de parâmetros, incluindo o modelo Mixtral 8X7B.
Para saber mais sobre o Llama-2, o nosso artigo Fine-Tuning LLaMA 2: Um Guia Passo a Passo para Personalizar o Modelo de Linguagem Grande fornece um guia passo a passo para treinar o Llama-2, usando novas abordagens para superar as limitações de memória e computação para melhor acesso a modelos de linguagem grandes de código aberto.
Além disso, construindo na solidez do SOLAR-10.7B, o modelo SOLAR 10.7B-Instruct é treinado com ênfase em seguir instruções complexas. Esta variante mostra um desempenho aprimorado, mostrando a adaptabilidade do modelo e a eficácia do treinamento para alcançar objetivos especiais.
Segue a tradução para o Português do Brasil:
Por fim, o SOLAR-10.7B introduz um método chamado Depth Up-Scaling, e vamos explorar isso mais a fundo na seção seguinte.
O método Depth Up-Scaling
Este método inovador permite a expansão da profundidade da rede neural do modelo sem a necessidade de um aumento correspondente nas recursos computacionais. Essa estratégia melhora a eficiência e o desempenho geral do modelo.
Elementos essenciais do Depth Up-Scaling
O Depth Up-Scaling é baseado em três componentes principais: (1) Peso do Mistral 7B, (2) Estrutura do Llama 2, e (3) Pre-treinamento contínuo.
Depth up-scaling para o caso com n = 32, s = 48, e m = 8. O depth up-scaling é alcançado por meio de um processo de duas etapas de escala depthwise seguido de pre-treinamento contínuo. (Fonte)
Modelo Base:
- Utiliza uma arquitetura de transformador de 32 camadas, especificamente o modelo Llama 2, inicializado com pesos pré-treinados do Mistral 7B.
- Escolhido por sua compatibilidade e desempenho, visando aproveitar os recursos da comunidade e introduzir modificações novas para capacidades aprimoradas.
- Serve como base para a escala depthwise e para o pre-treinamento adicional para escalar de forma eficiente.
Escalonamento Depthwise:
- Escalonar o modelo base definindo uma contagem alvo de camadas para o modelo escalado, levando em conta as capacidades do hardware.
- Você precisa duplicar o modelo de base, remover as últimas m camadas do original e as primeiras m camadas do duplicado, e então concatená-las para formar um modelo com s camadas.
- Este processo cria um modelo escalonado com um número ajustado de camadas para se ajustar a entre 7 e 13 bilhões de parâmetros, especificamente usando uma base de n=32 camadas, removendo m=8 camadas para alcançar s=48 camadas.
Continuação do Pre-treinamento:
- Aborda a queda inicial no desempenho após a escala por profundidade, continuando o pré-treinamento do modelo escalonado.
- Foi observada uma rápida recuperação de desempenho durante a continuação do pré-treinamento, o que foi atribuído à redução da heterogeneidade e das discrepâncias no modelo.
- A continuação do pré-treinamento é crucial para recuperar e potencialmente superar o desempenho do modelo de base, aproveitando a arquitetura do modelo escalonado por profundidade para um aprendizado efetivo.
Esses sumários destacam as estratégias chave e resultados do método de Escala de Profundidade, concentrando-se em aproveitar modelos existentes, escalar por meio de ajuste de profundidade e melhorar o desempenho por meio de continuação de pré-treinamento.
Essa abordagem multifacetada SOLAR-10.7B alcança e, na maioria dos casos, supera as capacidades de modelos muito maiores. Essa eficiência o torna uma escolha primária para uma ampla gama de aplicações específicas, demonstrando sua força e flexibilidade.
Como o Modelo Instruído SOLAR 10.7B Funciona?
SOLAR-10.7B instruct excelente em interpretar e executar instruções complexas, tornando-se valioso em cenários onde a compreensão precisa e a resposta a comandos humanos são cruciais. Essa capacidade é essencial para o desenvolvimento de sistemas AI mais intuitivos e interativos.
- O SOLAR 10.7B instruct resulta de uma refinação fina no modelo original SOLAR 10.7B para seguir instruções no formato QA.
- A refinação principal usa conjuntos de dados de código aberto juntamente com conjuntos de dados de QA de matemática sintetizados para melhorar as habilidades matemáticas do modelo.
- A primeira versão do SOLAR 10.7B instruct é criada pela integração das pesos do Mistral 7B para fortalecer suas capacidades de aprendizagem para processamento eficiente e eficaz de informação.
- A estrutura básica do SOLAR 10.7B é a arquitetura Llama2, que oferece uma mistura de velocidade e precisão.
Ao todo, a importância do modelo SOLAR-10.7B refinado está em seu melhor desempenho, adaptabilidade e potencial para aplicações amplas, impulsionando os campos de processamento de linguagem natural e inteligência artificial.
Aplicações Potenciais do Modelo SOLAR-10.7B Refinado
Antes de mergulhar na implementação técnica, vamos explorar algumas das aplicações potenciais de um modelo SOLAR-10.7B refinado.
Abaixo estão alguns exemplos de educação personalizada e tutoriais aprimorados, suporte ao cliente melhorado e criação de conteúdo automatizada.
- Educação personalizada e tutoria: O SOLAR-10.7B-Instruct pode revolucionar o setor educacional oferecendo experiências de aprendizagem personalizadas. Ele pode compreender consultas complexas de alunos, oferecendo explicações, recursos e exercícios personalizados. Esta capacidade torna-o numa ferramenta ideal para o desenvolvimento de sistemas de tutoria inteligentes que se adaptam aos estilos e necessidades de aprendizagem individuais, melhorando o engajamento e os resultados dos alunos.
- Melhor suporte ao cliente: O SOLAR-10.7B-Instruct pode impulsionar chatbots avançados e assistentes virtuais capazes de entender e resolver consultas complexas de clientes com alta precisão. Esta aplicação não só melhora a experiência do cliente, fornecendo suporte oportuno e relevante, mas também reduz a carga de trabalho dos representantes de atendimento ao cliente humano, automatizando consultas rotineiras.
- Criação e resumo automático de conteúdo: Para os meios de comunicação e criadores de conteúdo, o SOLAR-10.7B-Instruct oferece a capacidade de automatizar a geração de conteúdo escrito, como artigos de notícias, relatórios e escrita criativa. Além disso, ele pode resumir extensos documentos em formatos concisos e fáceis de entender, tornando-se inestimável para jornalistas, pesquisadores e profissionais que precisam assimilar e relatar rapidamente grandes volumes de informação.
Esses exemplos destacam a versatilidade e o potencial do SOLAR-10.7B-Instruct para impactar e melhorar a eficiência, a acessibilidade e a experiência do usuário em uma ampla gama de indústrias.
Uma Guia Passo a Passo para Usar o SOLAR -10.7B Instruct
Nós temos bastante conhecimento sobre o modelo SOLAR-10.7B e está na hora de colocar as mãos na massa.
Esta seção visa fornecer todas as instruções para executar o modelo SOLAR 10.7 Instruct v1.0 – GGUF a partir de upstage.
Os códigos são inspirados pela documentação oficial de Hugging Face. Os passos principais são definidos abaixo:
- Instalar e importar as bibliotecas necessárias
- Definir o modelo SOLAR-10.7B para uso de Hugging Face
- Executar a inferência do modelo
- Gerar o resultado a partir da solicitação do usuário
Instalação das bibliotecas
As principais bibliotecas usadas são transformers e accelerate.
- A biblioteca transformers fornece acesso a modelos pré-treinados e a versão especificada aqui é 4.35.2.
- A biblioteca accelerate é projetada para simplificar a execução de modelos de aprendizado de máquina em diferentes hardware (CPUs, GPUs) sem precisar entender detalhes específicos do hardware.
%%bash pip -q install transformers==4.35.2 pip -q install accelerate
Importar as bibliotecas
Agora que a instalação está concluída, procedemos importando as seguintes bibliotecas necessárias:
- torch é a biblioteca PyTorch, uma popular biblioteca de aprendizado de máquina aberta usada para aplicações como visão computacional e NLP.
- AutoModelForCausalLM é usado para carregar um modelo pré-treinado para modelagem de linguagem causal, e AutoTokenizer é responsável por converter texto em um formato que o modelo puder entender (tokenização).
import torch from transformers import AutoModelForCausalLM, AutoTokenizer
Configuração da GPU
O modelo sendo usado é a versão 1 do modelo SOLAR-10.7B da plataforma Hugging Face.
Uma GPU é necessária para acelerar o processo de carregamento e inferência do modelo.
O acesso à GPU no Google Colab é ilustrado na imagem abaixo:
- Ao clicar na aba Runtime, selecione Change runtime
- Em seguida, escolha T4 GPU na seção de Aceleradores de Hardware e Save as mudanças
Isso mudará o runtime padrão para T4:
Nós podemos ver as propriedades do runtime executando o seguinte comando do notebook Colab.
!nvidia-smi
GPU properties
Model definition
Tudo está configurado; podemos prosseguir com o carregamento do modelo da seguinte forma:
model_ID = "Upstage/SOLAR-10.7B-Instruct-v1.0" tokenizer = AutoTokenizer.from_pretrained(model_ID) model = AutoModelForCausalLM.from_pretrained( model_ID, device_map="auto", torch_dtype=torch.float16, )
- model_ID é uma string que identifica única e exclusivamente o modelo pré-treinado que queremos usar. Neste caso, “Upstage/SOLAR-10.7B-Instruct-v1.0” é especificado.
- AutoTokenizer.from_pretrained(model_ID) carrega um tokenizer pré-treinado no model_ID especificado, o que o prepare para processar a entrada de texto.
- AutoModelForCausalLM.from_pretrained() carrega o modelo de linguagem causal em si, com device_map=”auto” para usar automaticamente o melhor hardware disponível (a GPU que temos configurada), e torch_dtype=torch.float16 para usar números de ponto flutuante de 16 bits para poupar memória e potencialmente acelerar computações.
Model inference
Antes de gerar uma resposta, o texto de entrada (solicitação do usuário) é formatado e tokenizado.
- requisição_do_usuário contém a pergunta ou entrada para o modelo.
- conversa formata a entrada como parte de uma conversa, marcando-a com um papel (por exemplo, ‘usuário’).
- aplicar_modelo_de_chat aplica um modelo de conversa à entrada, preparando-a para o modelo em um formato que ele entenda.
- tokenizer(prompt, return_tensors=”pt”) converte o prompt em tokens e especifica o tipo de tensor (“pt” para tensores PyTorch), e .to(model.device) garante que a entrada esteja no mesmo dispositivo (CPU ou GPU) do modelo.
user_request = "What is the square root of 24?" conversation = [ {'role': 'user', 'content': user_request} ] prompt = tokenizer.apply_chat_template(conversation, tokenize=False, add_generation_prompt=True) inputs = tokenizer(prompt, return_tensors="pt").to(model.device)
Geração de resultados
A seção final usa o modelo para gerar uma resposta à pergunta de entrada e então decodifica e imprime o texto gerado.
- model.generate() gera texto com base nas entradas fornecidas, com use_cache=True para acelerar a geração reutilizando resultados computados anteriormente. max_length=4096 limita a longevidade máxima do texto gerado.
- tokenizer.decode(outputs[0]) converte os tokens gerados de volta para texto legível por humanos.
- print statement exibe a resposta gerada à pergunta do usuário.
outputs = model.generate(**inputs, use_cache=True, max_length=4096) output_text = tokenizer.decode(outputs[0]) print(output_text)
A execução bem-sucedida do código acima gera o seguinte resultado:
Substituindo a requisição do usuário pelo texto a seguir, obtemos a resposta gerada
user_request = "Tell me a story about the universe"
Limitações do modelo SOLAR-10.7B
Apesar de todos os benefícios do SOLAR-10.7B, ele tem suas próprias limitações, como qualquer outro grande modelo de linguagem, e as principais são destacadas abaixo:
- Exploração extensiva de hiperparâmetros: a necessidade de uma exploração mais extensiva de hiperparâmetros do modelo durante o Aumento de Profundidade (DUS) é uma limitação chave. Isso resultou na remoção de 8 camadas do modelo base devido a limitações de hardware.
- Demanda computacional elevada: o modelo é significativamente exigente em recursos computacionais, limitando seu uso por indivíduos e organizações com menores capacidades computacionais.
- Vulnerabilidade aos biases: potenciais bias na base de treinamento podem afetar o desempenho do modelo em algumas aplicações.
- Preocupação ambiental: o treinamento e a inferência do modelo requerem uma consumo de energia significativo, o que pode gerar preocupações ambientais.
Conclusão
Este artigo explorou o modelo SOLAR-10.7B, destacando sua contribuição à inteligência artificial através do método de aumento de profundidade. Ele descreveu o funcionamento e as aplicações potenciais do modelo e forneciu um guia prático para seu uso, desde a instalação até a geração de resultados.
Apesar de suas capacidades, o artigo também abordou as limitações do modelo SOLAR-10.7B, garantindo uma perspectiva bem-rounded para os usuários. Como a IA continua a evoluir, o SOLAR-10.7B exemplifica os passos dados em direção a ferramentas AI mais acessíveis e versáteis.
Para aqueles que procuram adentrar mais a fundo no potencial da IA, nossa tutorial Tutorial FLAN-T5: Guia e Ajuste Finito oferece um guia completo para ajustar fino um modelo FLAN-T5 para uma tarefa de pergunta e resposta usando a biblioteca transformers e executar inferencia otimizada em um cenário real do mundo. Você também pode encontrar nossos Tutorial de Ajuste Finito GPT-3.5 e nossa sessão de código em ajustar seu próprio modelo LlaMA 2..
Source:
https://www.datacamp.com/tutorial/solar-10-7b-fine-tuned-model-tutorial