Pular para o conteúdo principal

Phi-4 da Microsoft: Tutorial passo a passo com projeto de demonstração

Saiba como criar um verificador de lição de casa usando o modelo Phi-4 da Microsoft, que valida soluções, fornece correções detalhadas e sugere alternativas elegantes.
Actualizado 8 de jan. de 2025  · 12 min de leitura

A Microsoft apresentou recentemente o Phi-4, a mais recente adição à família Phi de modelos de linguagem pequenos. Como ele é excelente em matemática, decidi usar o Phi-4 para criar um verificador de dever de casa integrado ao Gradio.

Neste tutorial, orientarei você passo a passo na criação de um aplicativo da Web funcional capaz de validar soluções, corrigir erros e fornecer abordagens alternativas - exatamente como um assistente de ensino virtual!

O que é o modelo Phi-4 da Microsoft?

O Phi-4 se destaca em tarefas de raciocínio complexas, principalmente em matemática, enquanto mantém a proficiência no processamento de linguagem convencional. Seus principais recursos são:

  • Recursos avançados de raciocínio: O Phi-4 é treinado em conjuntos de dados sintéticos de alta qualidade conjuntos de dados sintéticos e usa técnicas inovadoras de pós-treinamento para superar modelos maiores em tarefas de raciocínio relacionadas à matemática.
  • Eficiência e acessibilidade: Com 14 bilhões de parâmetros, o Phi-4 oferece resultados de alta qualidade sem grandes recursos computacionais, o que o torna acessível a uma ampla gama de aplicações.
  • Disponibilidade: O Phi-4 está atualmente acessível por meio de Azure AI Foundry sob um Contrato de Licença de Pesquisa da Microsoft (MSRLA) e o Rosto de Abraço.

O Phi-4 demonstrou excelente desempenho em tarefas de raciocínio matemático, superando até mesmo modelos maiores, como o Gemini Pro 1.5, em problemas de competição de matemática. Isso o torna uma boa opção para aplicativos que exigem recursos avançados de resolução de problemas matemáticos.

Desempenho do Phi4 em problemas de competição de matemática

Fonte: Microsoft

Verificador de dever de casa do Phi-4: Visão geral da implementação

O aplicativo que vamos criar com o Phi-4 é um verificador de lição de casa com tecnologia de IA. Aqui está o fluxo de trabalho pelo qual o usuário passará:

  1. O usuário envia a lição de casa concluída (tanto as instruções do exercício quanto a solução do usuário).
  2. Se a solução estiver incorretao modelo explicará a solução correta com etapas detalhadas, como um professor.
  3. Se a solução estiver corretase a resposta for confusa, o modelo confirmará a solução ou sugerirá uma alternativa mais limpa e eficiente.

Fluxo de trabalho do aplicativo de demonstração phi-4

Para fornecer uma interface da Web em que os usuários possam interagir com o verificador de lição de casa, usaremos o Gradio.

Etapa 1: Pré-requisitos

Antes de começarmos, verifique se você tem os seguintes itens instalados:

  • Python 3.8+
  • PyTorch: Para executar modelos de aprendizagem profunda.
  • Biblioteca HuggingFace Transformers: Para carregar o modelo Phi-4 do HuggingFace.
  • Gradio: Para criar uma interface da Web fácil de usar.

Instale essas dependências executando:

!pip install torch transformers gradio -q

Agora, temos todas as dependências instaladas. Em seguida, configuramos o modelo Phi-4.

Etapa 2: Configuração do modelo

Carregamos o modelo Phi-4 da biblioteca Transformers da HuggingFace. Em seguida, o tokenizador pré-processa a entrada (o exercício e a solução) e a prepara para a inferência.

# Imports
from transformers import AutoModelForCausalLM, AutoTokenizer
import torch
import gradio as gr

# Load the Phi-4 model and tokenizer
model_name = "NyxKrage/Microsoft_Phi-4"
model=AutoModelForCausalLM.from_pretrained(model_name, torch_dtype=torch.float16, device_map="auto")
tokenizer = AutoTokenizer.from_pretrained(model_name)

# Set tokenizer padding token if not set
if tokenizer.pad_token_id is None:
    tokenizer.pad_token_id = tokenizer.eos_token_id

O trecho de código acima configura o modelo Phi-4 e o tokenizador e os integra ao PyTorch para cálculos. Vamos analisar o código acima com mais detalhes:

  • As classes AutoModelForCausalLM e AutoTokenizer são importadas para que você trabalhe com o modelo e a tokenização.
  • O modelo é carregado do repositório Hugging Face usando o método from_pretrained() e configurado para usar a precisão FP16 para otimizar o uso da memória e a velocidade de computação.
  • O parâmetro device_map="auto" garante que o modelo seja mapeado automaticamente para o hardware disponível.
  • O tokenizador também é carregado, o que processa o texto de entrada em tokens adequados para o modelo.
  • Uma verificação garante que o tokenizador tenha um token de preenchimento definido; caso contrário, ele atribui o eos_token_id (token de fim de sequência) como o token de preenchimento.

Etapa 3: Projetando recursos principais 

Depois que o modelo estiver configurado, definimos três funções principais para o aplicativo:

  1. Validação da solução: O modelo avalia a solução do usuário e fornece correções, se estiverem incorretas.
  2. Sugestões alternativas: Ele sugere soluções mais limpas se a solução do usuário estiver confusa.
  3. Feedback claro: O modelo também estrutura o resultado com seções claras.

A função a seguir, check_homework(), cria um prompt que contém o exercício, a solução do usuário e instruções específicas para que o modelo confirme a correção, identifique problemas ou forneça orientação passo a passo se a solução estiver incorreta.

# Function to validate the solution and provide feedback
def check_homework(exercise, solution):
    prompt = f"""
    Exercise: {exercise}
    Solution: {solution}
Task: Validate the solution to the math problem, provided by the user. If the user's solution is correct, confirm else provide an alternative if the solution is messy. If it is incorrect, provide the correct solution with step-by-step reasoning.
    """
    # Tokenize and generate response
    inputs = tokenizer(prompt, return_tensors="pt").to(model.device)
    print(f"Tokenized input length: {len(inputs['input_ids'][0])}")
    outputs = model.generate(**inputs, max_new_tokens=1024)
    print(f"Generated output length: {len(outputs[0])}")
    response = tokenizer.decode(outputs[0], skip_special_tokens=True)
    # response = response.replace(prompt, "").strip()
    prompt_len = len(prompt)
    response = response[prompt_len:].strip()
    print(f"Raw Response: {response}")
    return response

A função check_homework() tokeniza o prompt usando o tokenizador do modelo. Ele o prepara para o processamento convertendo a entrada em tensores PyTorch, que são mapeados para o dispositivo em que o modelo está sendo executado.

Em seguida, ele gera uma resposta do modelo com um limite de max_new_tokens=1024 para controlar o comprimento da saída. Esse comprimento de token pode variar conforme necessário.

Por fim, a resposta processada, que fornece feedback ou uma solução corrigida, é retornada. 

Etapa 4: Criando uma interface amigável para o usuário com o Gradio

O Gradio simplifica a implantação do verificador de lição de casa, permitindo que os usuários insiram seus exercícios e soluções de forma interativa. O trecho de código a seguir cria uma interface da Web do Gradio fácil de usar para a função check_homework(). A interface do Gradio recebe as entradas do usuário (o exercício e a solução) e as passa para o modelo para validação. 

# Define the function that integrates with the Gradio app
def homework_checker_ui(exercise, solution):
    return check_homework(exercise, solution)

# Create the Gradio interface using the new syntax
interface = gr.Interface(
    fn=homework_checker_ui,
    inputs=[
        gr.Textbox(lines=2, label="Exercise (e.g., Solve for x in 2x + 3 = 7)"),
        gr.Textbox(lines=1, label="Your Solution (e.g., x = 1)")
    ],
    outputs=gr.Textbox(label="Feedback"),
    title="AI Homework Checker",
    description="Validate your homework solutions, get corrections, and receive cleaner alternatives.",
)

# Launch the app
interface.launch(debug=True)

Criamos dois campos de entrada usando o site gr.Textbox: um para o problema matemático (exercício) e outro para a solução do usuário. A saída é exibida em um único gr.Textbox rotulado como "Feedback". O comando interface.launch() inicia o aplicativo Gradio em um navegador e o sinalizador debug=True permite registros detalhados para ajudar a solucionar erros. 

Etapa 5: Teste e validação

Chegou a hora de você testar nosso aplicativo AI Homework Checker. Aqui estão alguns testes que realizei:

  1. Problema matemático simples: Tentei resolver problemas básicos de probabilidade, e o aplicativo apresentou uma solução clara e bem estruturada para o problema.

Testando o Phi4 em um problema simples de matemática.

  1. Problema de derivada complexa: A solução de derivadas pode ser um desafio para alguns modelos. Aqui, tentei encontrar a primeira derivada de uma função de logaritmo natural com o verificador de lição de casa e ele produziu um raciocínio passo a passo correto para a solução.

Testando o Phi4 em um problema matemático de derivada complexa.

Conclusão

Neste tutorial, criamos um verificador de lição de casa com tecnologia de IA usando o modelo Phi-4. Esse aplicativo valida soluções, fornece correções detalhadas e sugere alternativas elegantes, tornando-o um professor virtual ideal para os alunos.

Você está pronto para estender o aplicativo? Faça experiências com problemas mais complexos ou integre-o a plataformas educacionais para uso mais amplo!


Aashi Dutt's photo
Author
Aashi Dutt
LinkedIn
Twitter

Sou Google Developers Expert em ML (Gen AI), Kaggle 3x Expert e Women Techmakers Ambassador com mais de 3 anos de experiência em tecnologia. Fui cofundador de uma startup de tecnologia de saúde em 2020 e estou fazendo mestrado em ciência da computação na Georgia Tech, com especialização em machine learning.

Temas

Aprenda IA com estes cursos!

programa

Developing AI Applications

23hrs hr
Learn to create AI-powered applications with the latest AI developer tools, including the OpenAI API, Hugging Face, and LangChain.
Ver DetalhesRight Arrow
Iniciar Curso
Ver maisRight Arrow
Relacionado
An avian AI exits its cage

blog

12 Alternativas de código aberto ao GPT-4

GPT-4 alternativas de código aberto que podem oferecer desempenho semelhante e exigem menos recursos computacionais para serem executadas. Esses projetos vêm com instruções, fontes de código, pesos de modelos, conjuntos de dados e interface de usuário do chatbot.
Abid Ali Awan's photo

Abid Ali Awan

9 min

blog

Anunciando a série de codificação conjunta "Torne-se um desenvolvedor de IA

Comece a trabalhar com a IA generativa nesta nova série de código-along. Gratuito por tempo limitado.
DataCamp Team's photo

DataCamp Team

4 min

Machine Learning

blog

25 projetos de aprendizado de máquina para todos os níveis

Projetos de aprendizado de máquina para iniciantes, estudantes do último ano e profissionais. A lista consiste em projetos guiados, tutoriais e exemplos de código-fonte.
Abid Ali Awan's photo

Abid Ali Awan

15 min

tutorial

Tutorial do DeepChecks: Automatizando os testes de machine learning

Saiba como realizar a validação de dados e modelos para garantir um desempenho robusto de machine learning usando nosso guia passo a passo para automatizar testes com o DeepChecks.
Abid Ali Awan's photo

Abid Ali Awan

12 min

tutorial

AI do cursor: Um guia com 10 exemplos práticos

Saiba como instalar o Cursor AI no Windows, macOS e Linux e descubra como usá-lo em 10 casos de uso diferentes.
François Aubry's photo

François Aubry

10 min

tutorial

Visão GPT-4: Um guia abrangente para iniciantes

Este tutorial apresentará tudo o que você precisa saber sobre o GPT-4 Vision, desde o acesso a ele, passando por exemplos práticos do mundo real, até suas limitações.
Arunn Thevapalan's photo

Arunn Thevapalan

12 min

See MoreSee More