Deployare i modelli di embedding con i punti di riferimento di inferenza di Hugging Face

Sviluppare i modelli di embedding utilizzando i punti di riferimento di Hugging Face

L’ascesa dell’IA generativa e degli LLM come ChatGPT ha incrementato l’interesse e l’importanza dei modelli di embedding per una varietà di compiti, specialmente per la generazione aumentata di recupero, come la ricerca o la chat con i tuoi dati. Gli embeddings sono utili perché rappresentano frasi, immagini, parole, ecc. come rappresentazioni vettoriali numeriche, che ci permettono di mappare elementi semanticamente correlati e recuperare informazioni utili. Questo ci aiuta a fornire un contesto rilevante per il nostro input per migliorare la qualità e la specificità della generazione.

Rispetto agli LLM, i modelli di embedding sono più piccoli e più veloci per l’inferring. Ciò è molto importante perché è necessario ricreare i propri embeddings dopo aver modificato o migliorato il modello mediante il fine-tuning. Inoltre, è importante che l’intero processo di recupero e generazione aggiuntiva sia il più veloce possibile per garantire una buona esperienza utente.

In questo post del blog, ti mostreremo come implementare modelli di embedding open-source su Hugging Face Inference Endpoints utilizzando Text Embedding Inference, la nostra soluzione SaaS gestita che semplifica la distribuzione di modelli. Inoltre, ti insegniamo come gestire richieste su larga scala.

  1. Cos’è Hugging Face Inference Endpoints
  2. Cos’è Text Embedding Inference
  3. Come distribuire un modello di embedding come Inference Endpoint
  4. Inviare una richiesta al punto finale e creare embeddings

Prima di iniziare, facciamo un ripasso delle nostre conoscenze sugli Inference Endpoints.

1. Cos’è Hugging Face Inference Endpoints?

Hugging Face Inference Endpoints offre un modo facile e sicuro per distribuire modelli di apprendimento automatico per l’utilizzo in produzione. Gli Inference Endpoints permettono ai programmatori e ai data scientist di creare applicazioni di AI generativa senza dover gestire l’infrastruttura: semplificando il processo di distribuzione con pochi clic, inclusa la gestione di grandi volumi di richieste con autoscaling, riducendo i costi infrastrutturali con scale-to-zero e offrendo sicurezza avanzata.

Ecco alcune delle caratteristiche più importanti:

  1. Distribuzione facile: Distribuisci modelli come API pronte per la produzione con pochi clic, eliminando la necessità di gestire l’infrastruttura o l’MLOps.
  2. Efficienza dei costi: Beneficia della capacità di scala automatica a zero, riducendo i costi scalando l’infrastruttura quando il punto finale non è in uso e pagando in base al tempo di attività del punto finale, garantendo l’efficacia dei costi.
  3. Sicurezza aziendale: Distribuisci modelli in punti finali offline sicuri accessibili solo tramite connessioni VPC dirette, supportati da certificazioni SOC2 Type 2 e offrendo accordi di elaborazione dati BAA e GDPR per una maggiore sicurezza e conformità dei dati.
  4. Ottimizzazione LLM: Ottimizzato per LLM, offre un’elevata velocità di elaborazione con Paged Attention e bassa latenza grazie al codice dei transformers personalizzati e all’energia di Flash Attention fornita dall’inferring di generazione di testo
  5. Supporto completo alle attività: Supporto immediato per 🤗 Transformers, Sentence-Transformers e attività e modelli Diffusers, e personalizzazione facile per abilitare attività avanzate come la diarizzazione di un interlocutore o qualsiasi attività e libreria di apprendimento automatico.

Puoi iniziare con gli Inference Endpoints su: https://ui.endpoints.huggingface.co/

2. Che cos’è l’Inference di Text Embeddings?

Text Embeddings Inference (TEI) è una soluzione appositamente progettata per il deployment e il servizio di modelli di text embeddings open source. TEI è sviluppato per l’estrazione ad alte prestazioni e supporta i modelli più popolari. TEI supporta i primi 10 modelli della classifica del Massive Text Embedding Benchmark (MTEB), tra cui FlagEmbedding, Ember, GTE ed E5. Attualmente, TEI implementa le seguenti funzionalità di ottimizzazione delle prestazioni:

  • Nessuna fase di compilazione del modello grafico
  • Immagini Docker di piccole dimensioni e tempi di avvio veloci. Sii pronto per una vera esperienza serverless!
  • Batching dinamico basato su token
  • Codice transformers ottimizzato per l’inference utilizzando Flash Attention, Candle e cuBLASLt
  • Caricamento dei pesi con Safetensors
  • Pronto per la produzione (tracciamento distribuito con Open Telemetry, metriche Prometheus)

Tutte queste funzionalità offrono prestazioni leader nel settore in termini di throughput e costi. In un benchmark per BAAI/bge-base-en-v1.5 su un Inference Endpoint Nvidia A10G con una lunghezza di sequenza di 512 token e una batch size di 32, abbiamo ottenuto un throughput di oltre 450 richieste al secondo, con un costo di 0,00156$ per 1M di token o 0,00000156$ per 1k di token. Ciò è 64 volte più economico delle OpenAI Embeddings (0,0001$ per 1k di token).

Performance

3. Deploy del modello di embedding come Inference Endpoint

Per iniziare, devi essere connesso con un’account Utente o Organizzazione con un metodo di pagamento registrato (puoi aggiungerne uno qui), quindi accedere agli Inference Endpoints su https://ui.endpoints.huggingface.co

Successivamente, clicca su “Nuovo endpoint”. Seleziona il repository, il cloud e la regione, adatta le impostazioni dell’istanza e della sicurezza e fai il deploy nel nostro caso con BAAI/bge-base-en-v1.5.

create-model

Gli Inference Endpoints suggeriscono un tipo di istanza in base alla dimensione del modello, che dovrebbe essere abbastanza grande per eseguire il modello. Qui hai scelto Intel Ice Lake 2 vCPU. Per ottenere le prestazioni per il benchmark che abbiamo eseguito, cambia l’istanza in 1x Nvidia A10G.

Nota: Se non è possibile selezionare il tipo di istanza, devi contattarci e richiedere un’istanza quota.

Select Instance

Puoi quindi effettuare il deploy del tuo modello cliccando su “Crea Endpoint”. Dopo 1-3 minuti, l’Endpoint dovrebbe essere online e disponibile per elaborare le richieste.

4. Invia una richiesta all’endpoint e crea gli embeddings

L’anteprima Endpoint fornisce accesso alla Inference Widget, che può essere utilizzata per inviare manualmente le richieste. Ciò consente di testare rapidamente il tuo Endpoint con input diversi e condividerlo con i membri del team.

Test del modello

Nota: TEI attualmente non tronca automaticamente l’input. Puoi abilitare questa funzione impostando truncate: true nella tua richiesta.

Oltre al widget, l’anteprima fornisce un esempio di codice per cURL, Python e Javascript, che puoi utilizzare per inviare richieste al modello. L’esempio di codice mostra come inviare una singola richiesta, ma TEI supporta anche richieste batch, che ti consentono di inviare più documenti contemporaneamente per aumentare l’utilizzo del tuo endpoint. Di seguito è riportato un esempio su come inviare una richiesta batch con troncamento impostato su true.

import requestsAPI_URL = "https://l2skjfwp9punv393.us-east-1.aws.endpoints.huggingface.cloud"headers = {    "Authorization": "Bearer IL TUO TOKEN",    "Content-Type": "application/json"}def query(payload):    response = requests.post(API_URL, headers=headers, json=payload)    return response.json()    output = query({"inputs": ["frase 1", "frase 2", "frase 3"],"truncate": True})# output [[0.334, ...], [-0.234, ...]]

Conclusioni

TEI su Hugging Face Inference Endpoints consente di distribuire modelli di embedding all’avanguardia in modo rapido ed efficiente dal punto di vista dei costi. Con una produttività leader del settore di oltre 450 richieste al secondo e costi a partire da $0,00000156 / 1k token, Inference Endpoints offre un risparmio del 64x rispetto agli Embeddings di OpenAI.

Per sviluppatori e aziende che utilizzano i text embedding per abilitare la ricerca semantica, chatbot, raccomandazioni e altro ancora, Hugging Face Inference Endpoints elimina gli oneri infrastrutturali e offre un’elevata produttività a costi minimi semplificando il processo dalla ricerca alla produzione.


Grazie per la lettura! Se hai qualche domanda, sentiti libero di contattarmi su Twitter o LinkedIn.