Esplorare alternative open-source ai modelli di OpenAI

Scoprire alternative open-source ai modelli di OpenAI

Introduzione

Novembre è stato un mese drammatico nel campo dell’IA. È stato un vero viaggio, dal lancio dei negozi GPT, GPT-4-turbo, fino al fiasco di OpenAI. Ma ciò solleva una domanda importante: quanto affidabili sono i modelli chiusi e le persone che li creano? Non sarà un’esperienza piacevole quando il modello che si utilizza nella produzione va giù a causa di qualche drama aziendale interno. Questo non è un problema con i modelli open-source. Hai il pieno controllo sui modelli che utilizzi. Hai sovranità sia sui tuoi dati che sui tuoi modelli. Ma è possibile sostituire un modello OS con i GPT? Fortunatamente, molti modelli open-source si stanno già comportando allo stesso livello o meglio dei modelli GPT-3.5. Questo articolo esplorerà alcune delle migliori alternative di modelli open-source per LLM e LMM.

Obiettivi di Apprendimento

  • Discutere dei modelli open-source di grandi dimensioni.
  • Esplorare modelli di linguaggio open-source all’avanguardia e modelli multi-modalità.
  • Una breve introduzione alla quantizzazione dei modelli di lingua di grandi dimensioni.
  • Scoprire gli strumenti e i servizi per eseguire LLMs localmente e in cloud.

Questo articolo è stato pubblicato come parte del Data Science Blogathon.

Cos’è un Modello Open-Source?

Un modello viene definito open-source quando i pesi e l’architettura del modello sono liberamente disponibili. Questi pesi sono i parametri pre-allenati di un grande modello di linguaggio, ad esempio, Llama di Meta. Di solito si tratta di modelli di base o modelli vaniglia senza alcun affinamento. Chiunque può utilizzare i modelli e affinarli su dati personalizzati per eseguire azioni di avanzamento.

Ma sono davvero aperti? E per quanto riguarda i dati? La maggior parte dei laboratori di ricerca non rilascia i dati utilizzati per l’allenamento dei modelli di base a causa di molte preoccupazioni riguardanti contenuti con copyright e sensibilità dei dati. Questo ci porta anche alla parte delle licenze dei modelli. Ogni modello open-source viene fornito con una licenza simile a qualsiasi altro software open-source. Molti modelli di base come Llama-1 sono stati rilasciati con licenza non commerciale, il che significa che non puoi utilizzare questi modelli per fare soldi. Ma modelli come Mistral7B e Zephyr7B sono forniti con licenze Apache-2.0 e MIT, che possono essere utilizzate ovunque senza preoccupazioni.

Alternative Open-Source

Dal lancio di Llama, c’è stata una corsa agli armamenti nello spazio open-source per raggiungere i modelli di OpenAI. E i risultati finora sono stati incoraggianti. In meno di un anno da GPT-3.5, abbiamo modelli che si esibiscono allo stesso livello o meglio di GPT-3.5 con meno parametri. Ma GPT-4 è ancora il miglior modello per eseguire compiti generali, dal ragionamento alla matematica fino alla generazione del codice. Osservando il ritmo di innovazione e il finanziamento dei modelli open-source, presto avremo modelli che si avvicineranno alle prestazioni di GPT-4. Per ora, discutiamo alcune ottime alternative open-source a questi modelli.

Llama 2 di Meta

Meta ha rilasciato il loro miglior modello, Llama-2, in luglio di quest’anno ed è diventato subito un grande successo grazie alle sue impressionanti capacità. Meta ha rilasciato quattro modelli Llama-2 con diverse dimensioni dei parametri: Llama-7b, 13b, 34b e 70b. Questi modelli sono stati abbastanza buoni da battere altri modelli aperti nelle rispettive categorie. Ma ora, molti modelli come mistral-7b e Zephyr-7b superano i modelli Llama più piccoli in molti benchmark. Llama-2 70b è ancora uno dei migliori nella sua categoria ed è una valida alternativa a GPT-4 per compiti come riassunto, traduzione automatica, ecc.

In diversi benchmark, Llama-2 ha ottenuto risultati migliori di GPT-3.5 ed è riuscito ad avvicinarsi a GPT-4, rendendolo un valido sostituto di GPT-3.5 e, in alcuni casi, di GPT-4. Il seguente grafico mostra un confronto delle prestazioni tra i modelli Llama e GPT di Anyscale.

Per ulteriori informazioni su Llama-2, consulta questo blog su HuggingFace. Questi LLM hanno dimostrato di performare bene quando vengono affinati su dataset personalizzati. Possiamo affinare i modelli per ottenere migliori performance in specifici compiti.

Diversi laboratori di ricerca hanno rilasciato anche versioni affinate di Llama-2. Questi modelli hanno mostrato risultati migliori rispetto ai modelli originali su molti benchmark. Questo modello Llama-2 affinato, Nous-Hermes-Llama2-70b di Nous Research, è stato affinato su più di 300.000 istruzioni personalizzate, rendendolo migliore dell’originale meta-llama/Llama-2-70b-chat-hf.

Controlla la classifica di HuggingFace leaderboard. Puoi trovare modelli Llama-2 affinati con risultati migliori rispetto ai modelli originali. Questo è uno dei vantaggi dei modelli open source. Ci sono molti modelli tra cui scegliere in base alle esigenze.

Mistral-7B

Dal rilascio di Mistral-7B, è diventato il preferito dalla comunità open source. Ha dimostrato di performare molto meglio di qualsiasi altro modello nella categoria e si avvicina alle capacità di GPT-3.5. Questo modello può essere un sostituto di Gpt-3.5 in molti casi, come riassumere, parafrasare, classificare, ecc.

Pochi parametri del modello garantiscono un modello più piccolo che può essere eseguito localmente o ospitato a tariffe più economiche rispetto a quelli più grandi. Ecco lo spazio originale di HuggingFace per Mistral-7b. Oltre a essere un ottimo performer, una cosa che distingue Mistral-7b è che è un modello puro, senza censura alcuna. La maggior parte dei modelli viene lobotomizzata con pesanti RLHF prima del lancio, rendendoli indesiderabili per molti compiti. Ma questo rende Mistral-7B desiderabile per eseguire compiti specifici del mondo reale.

Grazie alla vivace comunità open source, esistono diverse alternative affinate con migliori performance rispetto ai modelli originali di Mistral7b.

OpenHermes-2.5

OpenHermes-2.5 è un modello affinato di Mistral. Ha mostrato risultati notevoli in tutte le metriche di valutazione (GPT4ALL, TruthfullQA, AgiEval, BigBench). Per molti compiti, è indistinguibile da GPT-3.5. Per ulteriori informazioni su OpenHermes, consulta questo repository di HF: teknium/OpenHermes-2.5-Mistral-7B.

Zephyr-7b

Zephyr-7b è un altro modello affinato di Mistral-7b di HuggingFace. Huggingface ha affinato completamente il modello Mistral-7b utilizzando DPO (Direct Preference Optimization). Zephyr-7b-beta performa allo stesso livello dei modelli più grandi come GPT-3.5 e Llama-2-70b in molti compiti, inclusa la scrittura, le materie umanistiche e il gioco di ruolo. Di seguito è riportato un confronto tra Zephyr-7b e altri modelli su MTbench. Questo può essere un buon sostituto di GPT-3.5 in molti modi.

Ecco il repository ufficiale di HuggingFace: HuggingFaceH4/zephyr-7b-beta.

Intel Neural Chat

Il Neural chat è un modello LLM da 7B affinato da Intel a partire da Mistral-7B. Ha mostrato prestazioni notevoli, primeggiando nella classifica di Huggingface tra tutti i modelli da 7B. Il NeuralChat-7b è stato affinato e addestrato su Gaudi-2, un chip Intel per rendere più veloci le attività di intelligenza artificiale. L’eccellente performance di NeuralChat è il risultato dell’affinamento supervisionato e della preferenza di ottimizzazione diretta (DPO) su set di dati Orca e slim-orca.

Ecco il repository HuggingFace di NeuralChat: Intel/neural-chat-7b-v3-1.

Modelli open source multi-modalità di grandi dimensioni

Dopo il rilascio di GPT-4 Vision, c’è stato un aumento dell’interesse per i modelli multi-modalità. I grandi modelli di linguaggio con Vision possono essere ottimi in molti casi d’uso reali, come la risposta a domande su immagini e la narrazione di video. In uno di questi casi d’uso, Tldraw ha rilasciato una lavagna intelligente che consente di creare componenti web a partire dai disegni sulla lavagna utilizzando la straordinaria capacità di interpretazione delle immagini di GPT-4V.

Ma l’open source sta raggiungendo risultati più rapidamente. Molti laboratori di ricerca hanno rilasciato grandi modelli multi-modalità come Llava, Baklava, Fuyu-8b, ecc.

Llava

Llava (Large language and vision Assistant) è un modello multi-modalità con 13 miliardi di parametri. Llava collega il modello di linguaggio multimodale Vicuna-13b e un codificatore visivo pre-addestrato CLIP ViT-L/14. È stato sottoposto a fine-tuning sui dataset Visual Chat e Science QA per ottenere prestazioni simili a GPT-4V in molte occasioni. Può essere utilizzato in compiti di domande e risposte visive.

BakLlava

BakLlava di SkunkWorksAI è un altro grande modello multi-modalità. Ha Mistral-7b come base LLM con un’architettura Llava-1.5. Ha mostrato risultati promettenti paragonabili a Llava-13b nonostante le sue dimensioni più ridotte. Questo è il modello da cercare quando si ha bisogno di un modello più piccolo con buona inferenza visiva.

Fuyu-8b

Un’altra alternativa open source è Fuyu-8b. È un modello di linguaggio multi-modalità capace di Adept. Fuyu è un transformer solo decoder senza codificatore visivo; questo è diverso da Llava, dove viene utilizzato CLIP.

A differenza di altri modelli multi-modalità che utilizzano un codificatore di immagini per alimentare il modello di linguaggio con i dati delle immagini, Fuyu proietta linearmente i pezzi di immagini al primo layer del transformer. Tratta il decoder del transformer come un transformer per immagini. Di seguito è illustrata l’architettura di Fuyu.

Per ulteriori informazioni su Fuyu-8b, consulta questo articolo. Repository HuggingFace adept/fuyu-8b

Come utilizzare LLM open?

Ora che siamo familiarizzati con alcuni dei migliori LLM open-source e LMM, la domanda è come ottenere inferenze da un modello open. Ci sono due modi per ottenere inferenze dai modelli open-source. O scarichiamo i modelli su hardware personale o ci abboniamo a un provider cloud. Ora, questo dipende dal caso d’uso. Questi modelli, anche quelli più piccoli, richiedono una potenza di calcolo elevata e un’alta RAM e VRAM. Eseguire inferenze su questi modelli “vanilla” su hardware commerciale è molto difficile. Per semplificare questa operazione, i modelli devono essere quantizzati. Quindi, cerchiamo di capire cos’è la quantizzazione del modello.

Quantizzazione

La quantizzazione è la tecnica di riduzione della precisione dei numeri in virgola mobile. Di solito, i laboratori rilasciano modelli con pesi e attivazioni con una precisione in virgola mobile più elevata per raggiungere prestazioni all’avanguardia (SOTA). Ciò rende i calcoli dei modelli più onerosi e poco ideali per l’esecuzione locale o l’hosting sul cloud. La soluzione a ciò è ridurre la precisione dei pesi e degli embedding. Questo processo è chiamato quantizzazione.

I modelli SOTA di solito hanno una precisione float32. Ci sono diversi casi di quantizzazione, da fp32 -> fp16, fp32 -> int8, fp32 -> fp8 e fp32 -> fp4. Questa sezione discuterà solo della quantizzazione in int8 o quantizzazione su interi a 8 bit.

Quantizzazione su int8

La rappresentazione in int8 può ospitare solo 256 caratteri (con segno [-128, 127], senza segno [0, 256]), mentre fp32 può avere un’ampia gamma di numeri. L’idea è trovare la proiezione equivalente dei valori fp32 in [a, b] nel formato int8.

Se X è un numero fp32 nell’intervallo [a, b], lo schema di quantizzazione è

X = S*(X_q – z)

  • X_q = il valore quantizzato associato a X
  • S è il parametro di scalatura. Un numero fp32 positivo.
  • z è il punto di riferimento zero. È il valore int8 corrispondente al valore 0 in fp32.

Quindi, X_q = round(X/S + z) ∀ X ∈ [a, b]

Per i valori fp3,2, oltre [a, b] vengono approssimati alla rappresentazione più vicina

X_q = clip( X_q = round(a/S + z) + round(X/S + z) + X_q = round(b/S + z) )

  • round(a/S + z) è il numero più piccolo e round(b/S + z) è il numero più grande nel formato numerico dato.

Questa è l’equazione per la quantizzazione affina o a zero-point. Questa era la quantizzazione su interi a 8 bit; ci sono anche schemi di quantizzazione per fp8 a 8 bit, fp4 a 4 bit e fp2 a 2 bit. Per ulteriori informazioni sulla quantizzazione, fare riferimento a questo articolo su HuggingFace.

La quantizzazione del modello è un compito complesso. Ci sono diversi strumenti open-source per la quantizzazione di LLM, come Llama.cpp, AutoGPTQ, llm-awq, ecc. Llama cpp quantizza modelli utilizzando GGUF, AutoGPTQ utilizza GPTQ e llm-awq utilizza il formato AWQ. Questi sono diversi metodi di quantizzazione per ridurre la dimensione del modello.

Quindi, se si desidera utilizzare un modello open-source per l’inferenza, ha senso utilizzare un modello quantizzato. Tuttavia, si dovrà sacrificare un po’ di qualità dell’inferenza per ottenere un modello più piccolo che non costi una fortuna.

Consulta questo repository di HuggingFace per modelli quantizzati: https://huggingface.co/TheBloke

Esecuzione dei modelli in locale

Spesso, per diverse esigenze, potrebbe essere necessario eseguire modelli in locale. Ci sono molte libertà nell’eseguire modelli in locale. Che si tratti di costruire una soluzione personalizzata per documenti confidenziali o per scopi di sperimentazione, i LLM locali offrono molta più libertà e tranquillità rispetto ai modelli closed-source.

Ci sono più strumenti per eseguire modelli in locale. I più popolari sono vLLM, Ollama e LMstudio.

VLLM

Il vLLM è un software alternativo open-source scritto in Python che consente di eseguire LLM in locale. Per eseguire modelli su vLLM sono richieste determinate specifiche hardware, generalmente con una capacità di calcolo vRAM superiore a sette e RAM superiore a 16 GB. Si dovrebbe essere in grado di eseguirlo su un Collab per scopi di test. Attualmente, vLLM supporta il formato di quantizzazione AWQ. Questi sono i modelli che è possibile utilizzare con vLLM. Ecco come è possibile eseguire un modello in locale.

da vllm import LLM, SamplingParamsprompts = [
    "Ciao, mi chiamo",
    "Il presidente degli Stati Uniti è",
    "La capitale della Francia è",
    "Il futuro dell'IA è",
]sampling_params = SamplingParams(temperature=0.8, top_p=0.95)llm = LLM(model="mistralai/Mistral-7B-v0.1")outputs = llm.generate(prompts, sampling_params)for output in outputs:
    prompt = output.prompt
    generated_text = output.outputs[0].text
    print(f"Prompt: {prompt!r}, Testo generato: {generated_text!r}")

Il vLLM supporta anche i punti di termine di OpenAI. Pertanto, puoi utilizzare il modello come sostituto diretto dell’implementazione OpenAI esistente.

import openai# Modifica la chiave API e la base API di OpenAI per utilizzare il server API di vLLM.openai.api_key = "VUOTO"openai.api_base = "http://localhost:8000/v1"completion = openai.Completion.create(model="mistralai/Mistral-7B-v0.1",                                      prompt="San Francisco è un")print("Risultato del completamento:", completion)

Qui, faremo inferenze dal modello locale utilizzando OpenAI SDK.

Ollama

La Ollama è un’altra alternativa open-source CLI tool in Go che ci consente di eseguire modelli open-source su hardware locale. Ollama supporta i modelli quantizzati GGUF.

Crea un file Model nel tuo directory e esegui

DA ./mistral-7b-v0.1.Q4_0.gguf

Crea un modello Ollama dal file model.

ollama create example -f Modelfile

Ora, esegui il tuo modello.

ollama run example "Come uccidere un processo Python?"

Ollama consente anche di eseguire modelli Pytorch e HuggingFace. Per ulteriori informazioni, consulta il loro repository ufficiale.

LMstudio

LMstudio è un software chiuso che consente di eseguire comodamente qualsiasi modello sul tuo PC. Questo è ideale se si desidera un software dedicato per l’esecuzione di modelli. Ha una bella interfaccia utente per l’utilizzo di modelli locali. È disponibile su Mac (M1, M2), Linux (beta) e Windows.

Supporta anche modelli formattati GGUF. Dai un’occhiata alla loro pagina ufficiale per ulteriori informazioni. Assicurati che supporti le specifiche hardware.

Modelli dai provider cloud

Eseguire modelli in locale è ottimo per sperimentare e personalizzare i casi d’uso, ma utilizzarli nelle applicazioni richiede che i modelli siano ospitati nel cloud. Puoi ospitare il tuo modello nel cloud tramite fornitori dedicati di modelli LLM, come Replicate e Brev Dev. Puoi ospitare, ottimizzare e ottenere inferenze dai modelli. Forniscono un servizio scalabile ed elastico per l’hosting dei LLM. L’allocazione delle risorse cambierà in base al traffico sul tuo modello.

Conclusione

Lo sviluppo di modelli open-source sta avvenendo a un ritmo frenetico. Nel giro di un anno di ChatGPT, abbiamo modelli molto più piccoli che lo superano in molti benchmark. Questo è solo l’inizio e un modello al pari di GPT-4 potrebbe essere dietro l’angolo. Ultimamente, sono state sollevate domande riguardo all’integrità delle organizzazioni dietro i modelli chiusi. Come sviluppatore, non vorrai che il tuo modello e i servizi costruiti su di esso siano messi in pericolo. L’open-source risolve questo problema. Conosci il tuo modello e possiedi il modello. I modelli open-source forniscono molta libertà. Puoi anche avere una struttura ibrida con modelli OS e OpenAI per ridurre costi e dipendenza. Quindi, questo articolo è stato un’introduzione a modelli open-source di ottimo rendimento e concetti correlati all’esecuzione di tali modelli.

Quindi, ecco i punti chiave da tenere a mente:

  • I modelli aperti sono sinonimo di sovranità. I modelli open-source forniscono l’importante fattore di fiducia che i modelli chiusi non riescono a fornire.
  • I modelli di grandi dimensioni come Llama-2 e Mistral e le loro ottimizzazioni hanno superato GPT-3.5 su molte attività, rendendoli sostituti ideali.
  • I modelli multimodali di grandi dimensioni come Llava, BakLlava e Fuyu-8b hanno dimostrato di essere promettenti per molti compiti di domande e classificazione.
  • I LLM sono di grandi dimensioni ed esigono molta potenza di calcolo. Pertanto, per eseguirli in locale è necessaria la quantizzazione.
  • La quantizzazione è una tecnica per ridurre le dimensioni del modello trasformando i pesi e i float di attivazione in bit più piccoli.
  • L’hosting e l’inferenza in locale da modelli OS richiedono strumenti come LMstudio, Ollama e vLLM. Per effettuare il deployment nel cloud, utilizzare servizi come Replicate e Brev.

Domande frequenti

I media mostrati in questo articolo non sono di proprietà di Analytics Vidhya e vengono utilizzati a discrezione dell’autore.