Skip to content

Latest commit

 

History

History
166 lines (122 loc) · 6.95 KB

File metadata and controls

166 lines (122 loc) · 6.95 KB

Construindo com os Modelos da Família Meta

Introdução

Esta lição irá cobrir:

  • Explorando os dois principais modelos da família Meta - Llama 3.1 e Llama 3.2
  • Compreendendo os casos de uso e cenários para cada modelo
  • Exemplo de código para mostrar as características únicas de cada modelo

A Família de Modelos Meta

Nesta lição, exploraremos 2 modelos da família Meta ou "Llama Herd" - Llama 3.1 e Llama 3.2

Esses modelos vêm em diferentes variantes e estão disponíveis no marketplace de Modelos do GitHub. Aqui estão mais detalhes sobre como usar Modelos do GitHub para prototipar com modelos de IA.

Variantes dos Modelos:

  • Llama 3.1 - 70B Instruct
  • Llama 3.1 - 405B Instruct
  • Llama 3.2 - 11B Vision Instruct
  • Llama 3.2 - 90B Vision Instruct

Nota: Llama 3 também está disponível nos Modelos do GitHub, mas não será abordado nesta lição

Llama 3.1

Com 405 bilhões de parâmetros, Llama 3.1 se encaixa na categoria de LLM de código aberto.

O modelo é uma atualização do lançamento anterior Llama 3, oferecendo:

  • Janela de contexto maior - 128k tokens vs 8k tokens
  • Maior número máximo de tokens de saída - 4096 vs 2048
  • Melhor suporte multilíngue - devido ao aumento nos tokens de treinamento

Isso permite que o Llama 3.1 lide com casos de uso mais complexos ao construir aplicações GenAI, incluindo:

  • Chamadas de Funções Nativas - a capacidade de chamar ferramentas e funções externas fora do fluxo de trabalho do LLM
  • Melhor desempenho RAG - devido à janela de contexto maior
  • Geração de Dados Sintéticos - a capacidade de criar dados eficazes para tarefas como ajuste fino

Chamadas de Funções Nativas

O Llama 3.1 foi ajustado para ser mais eficaz em fazer chamadas de funções ou ferramentas. Ele também possui duas ferramentas embutidas que o modelo pode identificar como necessárias com base no prompt do usuário. Essas ferramentas são:

  • Brave Search - Pode ser usado para obter informações atualizadas, como a previsão do tempo, realizando uma busca na web
  • Wolfram Alpha - Pode ser usado para cálculos matemáticos mais complexos, evitando a necessidade de escrever suas próprias funções.

Você também pode criar suas próprias ferramentas personalizadas que o LLM pode chamar.

No exemplo de código abaixo:

  • Definimos as ferramentas disponíveis (brave_search, wolfram_alpha) no prompt do sistema.
  • Enviamos um prompt do usuário que pergunta sobre o clima em uma certa cidade.
  • O LLM responderá com uma chamada de ferramenta para o Brave Search, que se parecerá com isto <|python_tag|>brave_search.call(query="Stockholm weather")

Nota: Este exemplo apenas faz a chamada da ferramenta, se você quiser obter os resultados, precisará criar uma conta gratuita na página da API do Brave e definir a própria função

import os
from azure.ai.inference import ChatCompletionsClient
from azure.ai.inference.models import AssistantMessage, SystemMessage, UserMessage
from azure.core.credentials import AzureKeyCredential

token = os.environ["GITHUB_TOKEN"]
endpoint = "https://models.inference.ai.azure.com"
model_name = "meta-llama-3.1-405b-instruct"

client = ChatCompletionsClient(
    endpoint=endpoint,
    credential=AzureKeyCredential(token),
)


tool_prompt=f"""
<|begin_of_text|><|start_header_id|>system<|end_header_id|>

Environment: ipython
Tools: brave_search, wolfram_alpha
Cutting Knowledge Date: December 2023
Today Date: 23 July 2024

You are a helpful assistant<|eot_id|>
"""

messages = [
    SystemMessage(content=tool_prompt),
    UserMessage(content="What is the weather in Stockholm?"),

]

response = client.complete(messages=messages, model=model_name)

print(response.choices[0].message.content)

Llama 3.2

Apesar de ser um LLM, uma limitação que o Llama 3.1 tem é a multimodalidade. Ou seja, ser capaz de usar diferentes tipos de entrada, como imagens, como prompts e fornecer respostas. Essa habilidade é uma das principais características do Llama 3.2. Essas características também incluem:

  • Multimodalidade - tem a capacidade de avaliar tanto prompts de texto quanto de imagem
  • Variações de tamanho pequeno a médio (11B e 90B) - isso oferece opções de implantação flexíveis,
  • Variações apenas de texto (1B e 3B) - isso permite que o modelo seja implantado em dispositivos móveis e oferece baixa latência

O suporte multimodal representa um grande passo no mundo dos modelos de código aberto. O exemplo de código abaixo usa tanto um prompt de imagem quanto de texto para obter uma análise da imagem do Llama 3.2 90B.

Suporte Multimodal com Llama 3.2

import os
from azure.ai.inference import ChatCompletionsClient
from azure.ai.inference.models import (
    SystemMessage,
    UserMessage,
    TextContentItem,
    ImageContentItem,
    ImageUrl,
    ImageDetailLevel,
)
from azure.core.credentials import AzureKeyCredential

token = os.environ["GITHUB_TOKEN"]
endpoint = "https://models.inference.ai.azure.com"
model_name = "Llama-3.2-90B-Vision-Instruct"

client = ChatCompletionsClient(
    endpoint=endpoint,
    credential=AzureKeyCredential(token),
)

response = client.complete(
    messages=[
        SystemMessage(
            content="You are a helpful assistant that describes images in details."
        ),
        UserMessage(
            content=[
                TextContentItem(text="What's in this image?"),
                ImageContentItem(
                    image_url=ImageUrl.load(
                        image_file="sample.jpg",
                        image_format="jpg",
                        detail=ImageDetailLevel.LOW)
                ),
            ],
        ),
    ],
    model=model_name,
)

print(response.choices[0].message.content)

O aprendizado não para por aqui, continue a Jornada

Após completar esta lição, confira nossa coleção de Aprendizado em IA Generativa para continuar aprimorando seu conhecimento em IA Generativa!

Aviso Legal:
Este documento foi traduzido usando o serviço de tradução por IA Co-op Translator. Embora nos esforcemos para garantir a precisão, esteja ciente de que traduções automáticas podem conter erros ou imprecisões. O documento original em seu idioma nativo deve ser considerado a fonte autoritária. Para informações críticas, recomenda-se a tradução profissional humana. Não nos responsabilizamos por quaisquer mal-entendidos ou interpretações incorretas decorrentes do uso desta tradução.