Eseguire un LLM in ambito clinico in locale con Ollama

Con l’arrivo di Ollama
, uno dei diversi framework che consente di eseguire un LLM in locale, la community che gravita intorno al dominio dell’intelligenza artificiale Γ¨ esplosa sempre di piΓΉ e il numero di modelli addestrati sui dataset piΓΉ disparati Γ¨ cresciuto esponenzialmente.
Oggi parliamo di medllama2
, un modello sviluppato da Siraj Raval e derivato da Llama 2 e addestrato sul dataset MedQA (una raccolta di oltre 10.000 domande cliniche a scelta multipla).
MedQA come dataset Γ¨ utilizzato per:
- Simulare processi diagnostici basati su sintomi.
- Addestrare modelli a riconoscere pattern clinici.
Teniamo bene a mente che le risposte presenti nel dataset riflettono correlazioni statistiche, non evidenze scientifiche.
Disclaimer: questo modello, così come questo use case, non vuole né potrà mai sostituire un parere medico, ma offre piuttosto spunti per ricerche preliminari o simulazioni diagnostiche.
In questo articolo, vediamo come funziona e come utilizzarlo.
Installazione di Ollama
Per scaricare Ollama, esistono diverse opzioni a seconda del sistema operativo utilizzato. Ad esempio, per macOS* Γ¨ possibile scaricare il file .dmg
dal sito ufficiale e seguire la procedura guidata. Per Linux, Γ¨ sufficiente scaricare lo script di installazione tramite terminale ed eseguirlo:
curl -fsSL https://ollama.com/install.sh | sh # installa Ollama e le dipendenze necessarie
Come avviene spesso nel caso in cui si voglia verificare il successo dell’installazione, Γ¨ possibile aprire il terminale e digitare:
ollama --version
Se il comando viene riconosciuto, siamo a cavallo.
Esecuzione del modello
A questo punto, possiamo provare il modello desiderato, nel nostro caso medllama2
:
ollama run medllama2 # Scarica (se assente) e avvia il modello
Cosa succede quando eseguiamo questo comando?
- Ollama cerca il modello localmente.
- Se non lo trova, lo scarica dalla libreria ufficiale (in questo caso, il peso Γ¨ di circa ~3-4 GB per la versione 7B).
- Una volta che il modello Γ¨ salvato in locale, avvia unβinterfaccia interattiva per permettere di interagire con il modello.
Esempio di utilizzo:
>>>
$ ollama run medllama2
>>>
pulling manifest
pulling f050c123dbd6... 100% ββββββββββββββββββββββββββββββββββββββββββββββββββββββββ β 3.8 GB/3.8 GB 9.4 MB/s 0s
pulling 4dec76bb1a47... 100% ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ 45 B
pulling 0644cce03f93... 100% ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ 31 B
pulling f3d56c5b85c0... 100% ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ 381 B
verifying sha256 digest
writing manifest
success
>>> A 35-year-old woman presents with a persistent dry cough, shortness of breath, and fatigue. She is initially suspect
... ed of having asthma, but her spirometry results do not improve with bronchodilators. What could be the diagnosis?
The patient's symptoms and non-improving spirometry results suggest a diagnosis of chronic obstructive pulmonary
disease (COPD) rather than asthma. COPD is characterized by chronic inflammation in the lungs, leading to airway
obstruction and scarring. The patient should be referred to a specialist for further evaluation and management.
# testato anche in italiano
>>> Paziente con febbre alta e rash cutaneo dopo viaggio in Africa. Diagnosi possibili?
The patient's symptoms suggest malaria, which can cause fever and rash following travel to endemic regions. A
blood smear should be performed to confirm the diagnosis. The patient should be started on anti-malarial treatment
as soon as possible.
Per uscire basta premere CTRL+D
o digitare /bye
.
Integrazione tramite API REST
Non solo: se volessimo utilizzare questo modello in maniera puntuale, magari per costruirci un front-end che esponga queste informazioni, Γ¨ possibile interrogare le API del modello programmaticamente.
Una volta messo in esecuzione, possiamo utilizzare curl, o un qualsiasi client per chiamate REST (e.g.: Postman) per eseguire una chiamata, fornendo un body come quello riportato nell’esempio:
curl -X POST http://localhost:11434/api/generate -d '{
"model": "medllama2",
"prompt": "Uomo di 50 anni con dolore toracico e sudorazione. ECG mostra sopraslivellamento ST. Diagnosi?"
}'
Teniamo presente che i parametri chiave sono:
model
(obbligatorio): Nome del modello da utilizzare (nel nostro caso,medllama2
).prompt
(obbligatorio): Scenario clinico o domanda inerente il mondo clinico.stream
(opzionale): Impostafalse
per ricevere una risposta completa in una singola chiamata.
Conclusioni
Ollama Γ¨ uno strumento potente quanto vincente per diverse ragioni: intanto, essendo eseguito in locale, anche i dati rimangono locali, evitando rischi di violazione. Questo vuol dire anche che la sua esecuzione vale anche in ambienti particolari, con connettivitΓ limitata o assente per motivi di sicurezza.
Nel caso di modelli come medllama2
, il suo utilizzo tramite Ollama ci permette di avere uno strumento utile alla formazione e al test senza dover necessariamente addestrare un modello da zero, ma avendo un solido punto di partenza con cui sperimentare, anche su domini critici come quello del mondo healthcare.