```html

Förbättra factualiteten i biomedicinsk frågesvar av långformat

Denna artikel kommer att fördjupa sig i projektet OLAPH: Förbättra factualiteten i biomedicinsk frågesvar av långformat. Vi kommer att undersöka allt från installation och snabb användning till datasets, träning, inferens och iterativ lärande, med en mänsklig och insiktsfull ton.

Bakgrund

OLAPH, ett projekt av Minbyul Jeong, Hyeon Hwang, Chanwoong Yoon, Taewhoo Lee och Jaewoo Kang, syftar till att förbättra factualiteten i biomedicinsk frågesvar av långformat. Genom att minska hallucinationer och inkludera väsentliga påståenden strävar OLAPH efter att leverera mer tillförlitliga och korrekta svar. Detta möjliggörs genom automatisk utvärdering för att välja den bästa responsen under samplingprediktioner och genom att designa för att svara på frågor på ett föredraget sätt.

Installation

För att börja med OLAPH-projektet måste en Conda-miljö skapas. Det är viktigt att notera att två olika miljöer används för träning och inferens. För att säkerställa korrekt reproducerbarhet används PyTorch version 2.1.2. Beroende på ens miljöinställningar ska en kompatibel version av PyTorch väljas.

Följande kommando används för att skapa en ny miljö:

conda create -n olaph python=3.10

Därefter navigerar man till mappen alignment-handbook och installerar nödvändiga paket:

cd ./alignment-handbook/
python -m pip install .

För våra experimentella inställningar används CUDA version 11.8, och därmed rekommenderas följande kommando för att säkerställa kompatibilitet:

conda install pytorch torchvision torchaudio pytorch-cuda=11.8 -c pytorch -c nvidia

Vidare krävs installation av Flash Attention 2:

python -m pip install flash-attn==2.5.6 --no-build-isolation

För att stärka inferenshastigheten behövs vllm och ytterligare krav för automatisk utvärdering:

pip install -r requirements.txt --no-build-isolation
pip install git+https://github.com/lucadiliello/bleurt-pytorch.git

Slutligen behövs Huggingface-konto token i WRITE status och Git LFS för att ladda upp modeller:

huggingface-cli login
sudo apt-get install git-lfs

Snabb Användning

För snabb användning kan man ladda ner 7B modeller tränade med OLAPH-ramverket från HuggingFace-hubben. Här är en stegvis guide:

import torch
from transformers import AutoTokenizer, AutoModelForCausalLM
model_name = "dmis-lab/self-biorag-7b-olaph"
device = torch.device('cuda' if torch.cuda.is_available() else 'cpu')
model = AutoModelForCausalLM.from_pretrained(model_name, torch_dtype=torch.float16).to(device)
tokenizer = AutoTokenizer.from_pretrained(model_name, padding_side="left")
query = "Kan ett rött öga vara allvarligt?"
input_ids = tokenizer.encode(query, return_tensors="pt").to(device)
output = model.generate(input_ids, max_length=512, no_repeat_ngram_size=2, do_sample=False, top_p=1.0).to(device)
response = tokenizer.decode(output[0], skip_special_tokens=True).strip()
print("Model prediction:", response)

Den givna modellen fastslår att ett rött öga kan vara en indikation på en allvarlig åkomma eller en komplikation av en underliggande sjukdom eller skada. Vid ihållande eller svår rodnad rekommenderas att söka medicinsk hjälp.

Datasets

MedLFQA är en rekonstruerad version av långformat frågesvar (LFQA) benchmark datasets inom det biomedicinska området, vilket underlättar automatisk utvärdering. MedLFQA innefattar fyra komponenter: frågan (Q), långformat svar (A), måste-ha uttalanden (MH), och bra-att-ha uttalanden (NH).

De fyra biomedicinska LFQA benchmark datasets som utgör MedLFQA är:

LiveQA
MedicationQA
HealthSearchQA
K-QA

Inferens

Samplingprediktioner är en grundläggande aspekt av OLAPH-projektet. För att generera den första samplingprediktionen används följande kommando:

export DATA_NAME=live_qa
export HUGGINGFACE_MODEL_DIR=dmis-lab/selfbiorag_7b
CUDA_VISIBLE_DEVICES=0 python pdata_collection.py --model_name_or_path ${HUGGINGFACE_MODEL_DIR} --eval_data ${DATA_NAME}

För samplingprediktion under iterativ lärande används detta kommando:

export DATA_NAME=live_qa
export HUGGINGFACE_MODEL_DIR=your_trained_model
CUDA_VISIBLE_DEVICES=0 python pdata_collection.py --model_name_or_path ${HUGGINGFACE_MODEL_DIR} --eval_data ${DATA_NAME}

Träning

För att finslipa OLAPH används Supervised Fine-Tuning (SFT), vilket innebär att modellen tränas att känna igen frågesvar-uppgifter. Istället för att vidareutbilda på mänskligt annoterade svar eller pseudooptimala svar genererade av GPT-4, används ett självgenererat svar som ett märkt svar. Detta minskar beroendet av anotationsresurser i dataset.

För att genomföra denna process, används detta konfigurationsrecept:

cd alignment-handbook
CUDA_VISIBLE_DEVICES=0,1,2,3 ACCELERATE_LOG_LEVEL=info accelerate launch --config_file recipes/accelerate_configs/deepspeed_zero3.yaml --num_processes 4 scripts/run_sft.py recipes/selfbiorag_7b/sft/config_full.yaml

För att skapa ett syntetiskt preferensset baserat på samplingprediktioner:

export HUGGINGFACE_MODEL_DIR=your_trained_model
export DATA_NAME=live_qa
export WODATA_NAME=kqa_golden
python pred_to_preference.py --model_name ${HUGGINGFACE_MODEL_DIR} --wodata_name ${WODATA_NAME} --data_names live_qa+medication_qa+healthsearch_qa+kqa_golden+kqa_silver_wogold --alpha 1.0 --beta 1.0 --gamma 1.0 --threshold 200

Direkt Prefensoptimering (DPO)

För att genomföra DPO-processen används detta recept:

cd alignment-handbook
CUDA_VISIBLE_DEVICES=0,1,2,3 ACCELERATE_LOG_LEVEL=info accelerate launch --config_file recipes/accelerate_configs/deepspeed_zero3.yaml --num_processes 4 scripts/run_dpo.py recipes/selfbiorag_7b/sft/config_full.yaml

Iterativt Lärande

Iterativt lärande inom OLAPH omfattar flera cykler av träning och generering av samplingprediktioner. Målet är att förfina modellens prestanda genom iterativa steg som include samplingprediktioner, SFT, och preferensoptimering.

Dessa steg genomförs så här:

Samplingprediktioner (pdata_collection.py)
Göra SFT set (pred_to_sft.py)
SFT
Samplingprediktioner (pdata_collection.py)
Göra preferensset (pred_to_preference.py)
DPO
Samplingprediktioner (pdata_collection.py)
Göra preferensset (pred_to_preference.py)
DPO
Samplingprediktioner (pdata_collection.py)
Göra preferensset (pred_to_preference.py)
DPO

FactScore

Information om FactScore kommer snart att tillhandahållas.

FAQ

Ytterligare frågor och svar kommer snart att tillhandahållas.

Citation

Citering för OLAPH-projektet enligt följande:

@misc{jeong2024olaph, title={OLAPH: Improving Factuality in Biomedical Long-form Question Answering}, author={Minbyul Jeong and Hyeon Hwang and Chanwoong Yoon and Taewhoo Lee and Jaewoo Kang}, year={2024}, eprint={2405.12701}, archivePrefix={arXiv}, primaryClass={cs.CL}}

Kontaktinformation

För hjälp eller problem med att använda MedLFQA och OLAPH, skicka in en GitHub-fråga. För kommunikation relaterad till OLAPH, vänligen kontakta Minbyul Jeong (minbyuljeong (at) korea.ac.kr) eller Hyeon Hwang (hyeon-hwang (at) korea.ac.kr)

Resurser

För ytterligare resurser och information, besök OLAPH:s GitHub-förvar.

OLAPH: Fördelar och användningsområden

OLAPH (Optimizing Language Accuracy for Practical Healthcare) erbjuder flera fördelar inom biomedicinsk frågesvar:

  • Förbättrad factualitet: OLAPH minskar hallucinationer och ökar tillförlitligheten i svaren.
  • Långformat svar: Ger detaljerade och omfattande svar på komplexa medicinska frågor.
  • Automatisk utvärdering: Väljer den bästa responsen bland flera samplingprediktioner.
  • Iterativt lärande: Kontinuerlig förbättring av modellen genom upprepade träningscykler.
  • Minskad beroende av manuell annotering: Använder självgenererade svar för träning.

Användningsområden för OLAPH inkluderar:

  • Medicinska informationssystem för patienter och vårdpersonal
  • Forskningsstöd inom biomedicin
  • Utbildningsverktyg för medicinska studenter
  • Beslutsstödsystem för kliniker

Genom att kombinera avancerad språkmodellering med biomedicinsk expertis, strävar OLAPH efter att revolutionera hur vi får tillgång till och använder medicinsk information, vilket potentiellt kan förbättra patientvård och medicinsk forskning.

```