Phi-4-multimodal è un modello di base multimodale multimodale leggero sviluppato da Microsoft. Fa parte della famiglia Phi di small language models (SLM) di Microsoft.
In questo tutorial ti spiegherò passo dopo passo come usare Phi-4-multimodal per creare un tutor linguistico multimodale che può lavorare con testo, immagini e audio. Le funzionalità principali di questa applicazione sono:
Apprendimento basato sul testo: fornisce correzione grammaticale in tempo reale, traduzione, ristrutturazione delle frasi e suggerimenti di vocabolario basati sul contesto.
Apprendimento basato sulle immagini: estrae e traduce il testo dalle immagini e riassume i contenuti visivi per una migliore comprensione.
Apprendimento basato sull’audio: converte il parlato in testo, valuta l’accuratezza della pronuncia e abilita la traduzione vocale in tempo reale in più lingue.
Facciamo prima una rapidissima presentazione del modello Phi-4-multimodal e poi inizieremo a costruire l’app.
Che cos’è Phi-4-Multimodal?
Phi-4-multimodal è un modello di AI avanzato progettato per l’elaborazione di testo, visione e parlato. Consente l’integrazione fluida di più modalità, rendendolo ideale per applicazioni di apprendimento linguistico. Alcune delle sue capacità chiave includono:
Elaborazione del testo: include correzione grammaticale, traduzione e costruzione di frasi.
Elaborazione della visione: Phi 4 può eseguire riconoscimento ottico dei caratteri (OCR), sintesi di immagini e interazioni multimodali.
Elaborazione del parlato: può anche eseguire il riconoscimento automatico del parlato (ASR), oltre a feedback sulla pronuncia e traduzione da voce a testo.
Con un contesto di 128K token, il modello Phi-4 multimodale è ottimizzato per il ragionamento efficiente e ambienti con memoria limitata, il che lo rende perfetto per l’apprendimento linguistico in tempo reale basato sull’AI.
Passo 1: Prerequisiti
L’app tutor linguistico multimodale che andremo a costruire è uno strumento interattivo basato su AI progettato per aiutare gli utenti a imparare nuove lingue tramite una combinazione di interazioni basate su testo, immagini e audio.
Prima di iniziare, assicuriamoci di avere installati i seguenti strumenti e librerie:
Python 3.8+
torch
Transformers
PIL
Soundfile
Gradio
Esegui i seguenti comandi per installare le dipendenze necessarie:
pip install gradio transformers torch soundfile pillowOfferto da
Dobbiamo anche assicurarci che FlashAttention2 sia installato per prestazioni migliori:
pip install flash-attn --no-build-isolationOfferto da
Nota: questo progetto usa una GPU A100 su un notebook Google Colab. Se usi una GPU più vecchia (ad esempio NVIDIA V100), potresti dover disabilitare FlashAttention2 impostando _attn_implementation="eager" nella fase di inizializzazione del modello.
Una volta installate le dipendenze di cui sopra, esegui i seguenti comandi di import:
import gradio as gr
import torch
import requests
import io
import os
import soundfile as sf
from PIL import Image
from transformers import AutoModelForCausalLM, AutoProcessor, GenerationConfigOfferto da
Passo 2: Caricare Phi-4-Multimodal
Per sfruttare le capacità multimodali di Phi-4, carichiamo prima sia il modello sia il suo processor. Il percorso del modello è impostato da Hugging Face, mentre il processor gestisce la tokenizzazione del testo, il ridimensionamento e la normalizzazione delle immagini e la conversione delle forme d’onda audio in un formato compatibile con il modello per un’elaborazione multimodale senza soluzione di continuità.
# Load model and processor
model_path ="microsoft/Phi-4-multimodal-instruct"
processor = AutoProcessor.from_pretrained(model_path, trust_remote_code=True)
model = AutoModelForCausalLM.from_pretrained(
model_path,
device_map="cuda",
torch_dtype="auto",
trust_remote_code=True,
_attn_implementation='flash_attention_2',).cuda()
generation_config = GenerationConfig.from_pretrained(model_path)Offerto da
La fase di inizializzazione del modello usa la funzione 'AutoModelForCausalLM.from_pretrained() per caricare il modello Phi-4 preaddestrato per il causal language modeling (CLM) e carica il modello sulla GPU usando device_map="cuda".
Un parametro chiave in questa fase è _attn_implementation='flash_attention_2'`, che utilizza FlashAttention2 per un meccanismo di attenzione più veloce ed efficiente in termini di memoria, soprattutto per l’elaborazione di contesti lunghi.
Passo 3: Creare le funzionalità chiave
Ora che abbiamo caricato il modello, costruiamo le funzionalità principali.
1. Pulizia della risposta
Un aspetto importante di qualsiasi progetto basato su LLM o VLM è assicurarsi che il modello generi risposte accurate e pertinenti. Ciò comporta anche la rimozione di eventuali testi di prompt dall’output, così che gli utenti ricevano una risposta pulita e diretta senza che l’istruzione iniziale appaia all’inizio.
defclean_response(response, instruction_keywords):"""Removes the prompt text dynamically based on instruction keywords."""for keyword in instruction_keywords:if response.lower().startswith(keyword.lower()):
response = response[len(keyword):].strip()return responseOfferto da
Usiamo semplicemente la funzione strip() per rimuovere il testo del prompt in base alle parole chiave dell’istruzione.
2. Elaborazione dell’input
Ora elaboriamo i nostri input, che possono essere testo, immagine o audio, a seconda dell’input o dello scenario dell’utente.
La funzione sopra è responsabile della gestione degli input di testo, immagine e audio e della generazione di una risposta utilizzando il modello Phi-4-multimodale. Ecco un’analisi tecnica di questo flusso di lavoro:
Elaborazione dell’input immagine: se il tipo di input è "Image", il prompt è formattato con un segnaposto per l’immagine (<|image_1|>). L’immagine viene quindi caricata e il processor tokenizza il testo di accompagnamento mentre estrae le caratteristiche visive. Gli input elaborati vengono trasferiti alla GPU per un calcolo ottimizzato.
Elaborazione dell’input audio: se il tipo di input è "Audio", il prompt è strutturato con un segnaposto per l’audio (<|audio_1|>). Il file audio viene letto con la funzione sf.read(), estraendo la forma d’onda grezza e la frequenza di campionamento. Il processor quindi codifica sia l’audio sia il testo, garantendo un’integrazione fluida per la comprensione multimodale.
Elaborazione dell’input di testo: se il tipo di input è "Text", il testo è incorporato direttamente nel prompt. Il processor tokenizza e codifica l’input, preparandolo per l’elaborazione successiva da parte del modello.
3. Traduzione e correzioni grammaticali
Successivamente, elaboriamo il testo per traduzione e correzione grammaticale utilizzando il modello Phi-4-multimodal.
defprocess_text_translate(text, target_language):
prompt =f'Translate the following text to {target_language}: "{text}"'return process_input(text,"Text", prompt)defprocess_text_grammar(text):
prompt =f'Check the grammar and provide corrections if needed for the following text: "{text}"'return process_input(text,"Text", prompt)Offerto da
La funzione process_text_translate() costruisce dinamicamente un prompt di traduzione specificando la lingua di destinazione e passa il testo in input e il prompt strutturato alla funzione process_input(), restituendo il testo tradotto.
Allo stesso modo, la funzione process_text_grammar() crea un prompt per la correzione grammaticale, chiama la funzione process_input() con il testo e il tipo di input e restituisce una versione grammaticalmente corretta del testo. Entrambe le funzioni semplificano l’elaborazione del linguaggio sfruttando le capacità del modello per traduzione e correzione grammaticale.
Passo 4: Creare la demo multimodale con Gradio
Ora abbiamo tutte le funzioni logiche chiave. Passiamo a costruire un’interfaccia interattiva con Gradio.
Il codice sopra organizza l’interfaccia Gradio in tre schede interattive, ovvero apprendimento basato sul testo, apprendimento basato sulle immagini e apprendimento basato sull’audio, ognuna progettata per diverse funzionalità di apprendimento linguistico.
Gli utenti possono inserire testo per la traduzione o la correzione grammaticale, caricare immagini per l’estrazione del testo e la sintesi, oppure fornire audio per la trascrizione del parlato e la traduzione.
Ogni funzione è attivata usando il metodo click() di Gradio, che richiama funzioni di elaborazione come process_text_translate(), process_text_grammar() e process_input() come discusso sopra, passando gli input richiesti e aggiornando gli output in modo dinamico.
Clear è incluso un pulsante in ogni scheda per azzerare input e output, assicurando un’esperienza d’uso fluida. Infine, l’interfaccia viene avviata con demo.launch(debug=True), che consente agli sviluppatori di eseguire facilmente il debug di eventuali errori nell’applicazione.
Passo 5: Test dell’app
Ecco alcuni dei miei esperimenti con questa applicazione.
Traduzione e controllo grammaticale
Per i compiti di traduzione e controllo grammaticale, ho fornito il testo "Hello world" e ho istruito il modello a tradurlo in francese e a verificarne la grammatica (nota i diversi pulsanti per traduzione e controllo grammaticale).
Tradurre il testo all’interno di un’immagine
In questo esempio, ho fornito un’immagine di un cartello di stop in spagnolo che istruisce i pedoni a non camminare su un determinato percorso. Il modello ha interpretato accuratamente il significato del cartello e ha generato la risposta: "Do not walk on the track."
Trascrizione e traduzione dell’audio
Per la trascrizione audio, ho fornito un file audio in inglese e ho istruito il modello a trascrivere il parlato e a tradurre la trascrizione in francese.
Conclusione
In questo tutorial, abbiamo costruito un tutor linguistico multimodale utilizzando il modello Phi-4 multimodale, abilitando l’apprendimento linguistico basato su testo, immagini e audio. Abbiamo utilizzato le capacità avanzate di visione, parlato e testo di Phi-4 per fornire traduzioni in tempo reale, correzioni grammaticali, trascrizione del parlato e approfondimenti basati sulle immagini. Questo progetto dimostra come l’AI multimodale possa migliorare l’educazione linguistica e l’accessibilità.
Sono una Google Developers Expert in ML (Gen AI), una Kaggle 3x Expert e una Women Techmakers Ambassador con oltre 3 anni di esperienza nel tech. Ho co-fondato una startup health-tech nel 2020 e sto conseguendo un master in informatica al Georgia Tech, con specializzazione in machine learning.
Scopri i 15 migliori server MCP remoti che stanno trasformando lo sviluppo AI nel 2026. Scopri come migliorano automazione, ragionamento, sicurezza e velocità dei workflow.
Impara a creare applicazioni basate sull'intelligenza artificiale con i più recenti strumenti per sviluppatori di AI, tra cui OpenAI API, Hugging Face e LangChain.
Phi-4-multimodal è un modello di base multimodale multimodale leggero sviluppato da Microsoft. Fa parte della famiglia Phi di small language models (SLM) di Microsoft.
In questo tutorial ti spiegherò passo dopo passo come usare Phi-4-multimodal per creare un tutor linguistico multimodale che può lavorare con testo, immagini e audio. Le funzionalità principali di questa applicazione sono:
Facciamo prima una rapidissima presentazione del modello Phi-4-multimodal e poi inizieremo a costruire l’app.
Che cos’è Phi-4-Multimodal?
Phi-4-multimodal è un modello di AI avanzato progettato per l’elaborazione di testo, visione e parlato. Consente l’integrazione fluida di più modalità, rendendolo ideale per applicazioni di apprendimento linguistico. Alcune delle sue capacità chiave includono:
Con un contesto di 128K token, il modello Phi-4 multimodale è ottimizzato per il ragionamento efficiente e ambienti con memoria limitata, il che lo rende perfetto per l’apprendimento linguistico in tempo reale basato sull’AI.
Passo 1: Prerequisiti
L’app tutor linguistico multimodale che andremo a costruire è uno strumento interattivo basato su AI progettato per aiutare gli utenti a imparare nuove lingue tramite una combinazione di interazioni basate su testo, immagini e audio.
Prima di iniziare, assicuriamoci di avere installati i seguenti strumenti e librerie:
Esegui i seguenti comandi per installare le dipendenze necessarie:
Dobbiamo anche assicurarci che FlashAttention2 sia installato per prestazioni migliori:
Nota: questo progetto usa una GPU A100 su un notebook Google Colab. Se usi una GPU più vecchia (ad esempio NVIDIA V100), potresti dover disabilitare
FlashAttention2impostando_attn_implementation="eager"nella fase di inizializzazione del modello.Una volta installate le dipendenze di cui sopra, esegui i seguenti comandi di import:
Passo 2: Caricare Phi-4-Multimodal
Per sfruttare le capacità multimodali di Phi-4, carichiamo prima sia il modello sia il suo processor. Il percorso del modello è impostato da Hugging Face, mentre il processor gestisce la tokenizzazione del testo, il ridimensionamento e la normalizzazione delle immagini e la conversione delle forme d’onda audio in un formato compatibile con il modello per un’elaborazione multimodale senza soluzione di continuità.
La fase di inizializzazione del modello usa la funzione 'AutoModelForCausalLM.from_pretrained()
per caricare il modello Phi-4 preaddestrato per il causal language modeling (CLM) e carica il modello sulla GPU usandodevice_map="cuda".Un parametro chiave in questa fase è _attn_implementation='flash_attention_2'`, che utilizza FlashAttention2 per un meccanismo di attenzione più veloce ed efficiente in termini di memoria, soprattutto per l’elaborazione di contesti lunghi.
Passo 3: Creare le funzionalità chiave
Ora che abbiamo caricato il modello, costruiamo le funzionalità principali.
1. Pulizia della risposta
Un aspetto importante di qualsiasi progetto basato su LLM o VLM è assicurarsi che il modello generi risposte accurate e pertinenti. Ciò comporta anche la rimozione di eventuali testi di prompt dall’output, così che gli utenti ricevano una risposta pulita e diretta senza che l’istruzione iniziale appaia all’inizio.
Usiamo semplicemente la funzione
strip()per rimuovere il testo del prompt in base alle parole chiave dell’istruzione.2. Elaborazione dell’input
Ora elaboriamo i nostri input, che possono essere testo, immagine o audio, a seconda dell’input o dello scenario dell’utente.
La funzione sopra è responsabile della gestione degli input di testo, immagine e audio e della generazione di una risposta utilizzando il modello Phi-4-multimodale. Ecco un’analisi tecnica di questo flusso di lavoro:
"Image", il prompt è formattato con un segnaposto per l’immagine (<|image_1|>). L’immagine viene quindi caricata e il processor tokenizza il testo di accompagnamento mentre estrae le caratteristiche visive. Gli input elaborati vengono trasferiti alla GPU per un calcolo ottimizzato."Audio", il prompt è strutturato con un segnaposto per l’audio (<|audio_1|>). Il file audio viene letto con la funzionesf.read(), estraendo la forma d’onda grezza e la frequenza di campionamento. Il processor quindi codifica sia l’audio sia il testo, garantendo un’integrazione fluida per la comprensione multimodale."Text", il testo è incorporato direttamente nel prompt. Il processor tokenizza e codifica l’input, preparandolo per l’elaborazione successiva da parte del modello.3. Traduzione e correzioni grammaticali
Successivamente, elaboriamo il testo per traduzione e correzione grammaticale utilizzando il modello Phi-4-multimodal.
La funzione
process_text_translate()costruisce dinamicamente un prompt di traduzione specificando la lingua di destinazione e passa il testo in input e il prompt strutturato alla funzioneprocess_input(), restituendo il testo tradotto.Allo stesso modo, la funzione
process_text_grammar()crea un prompt per la correzione grammaticale, chiama la funzioneprocess_input()con il testo e il tipo di input e restituisce una versione grammaticalmente corretta del testo. Entrambe le funzioni semplificano l’elaborazione del linguaggio sfruttando le capacità del modello per traduzione e correzione grammaticale.Passo 4: Creare la demo multimodale con Gradio
Ora abbiamo tutte le funzioni logiche chiave. Passiamo a costruire un’interfaccia interattiva con Gradio.
Il codice sopra organizza l’interfaccia Gradio in tre schede interattive, ovvero apprendimento basato sul testo, apprendimento basato sulle immagini e apprendimento basato sull’audio, ognuna progettata per diverse funzionalità di apprendimento linguistico.
Gli utenti possono inserire testo per la traduzione o la correzione grammaticale, caricare immagini per l’estrazione del testo e la sintesi, oppure fornire audio per la trascrizione del parlato e la traduzione.
Ogni funzione è attivata usando il metodo
click()di Gradio, che richiama funzioni di elaborazione comeprocess_text_translate(),process_text_grammar()eprocess_input()come discusso sopra, passando gli input richiesti e aggiornando gli output in modo dinamico.Clear è incluso un pulsante in ogni scheda per azzerare input e output, assicurando un’esperienza d’uso fluida. Infine, l’interfaccia viene avviata con
demo.launch(debug=True), che consente agli sviluppatori di eseguire facilmente il debug di eventuali errori nell’applicazione.Passo 5: Test dell’app
Ecco alcuni dei miei esperimenti con questa applicazione.
Traduzione e controllo grammaticale
Per i compiti di traduzione e controllo grammaticale, ho fornito il testo "Hello world" e ho istruito il modello a tradurlo in francese e a verificarne la grammatica (nota i diversi pulsanti per traduzione e controllo grammaticale).
Tradurre il testo all’interno di un’immagine
In questo esempio, ho fornito un’immagine di un cartello di stop in spagnolo che istruisce i pedoni a non camminare su un determinato percorso. Il modello ha interpretato accuratamente il significato del cartello e ha generato la risposta: "Do not walk on the track."
Trascrizione e traduzione dell’audio
Per la trascrizione audio, ho fornito un file audio in inglese e ho istruito il modello a trascrivere il parlato e a tradurre la trascrizione in francese.
Conclusione
In questo tutorial, abbiamo costruito un tutor linguistico multimodale utilizzando il modello Phi-4 multimodale, abilitando l’apprendimento linguistico basato su testo, immagini e audio. Abbiamo utilizzato le capacità avanzate di visione, parlato e testo di Phi-4 per fornire traduzioni in tempo reale, correzioni grammaticali, trascrizione del parlato e approfondimenti basati sulle immagini. Questo progetto dimostra come l’AI multimodale possa migliorare l’educazione linguistica e l’accessibilità.