CAMEL
1.0.0
私たちは、より高度な臨床大規模言語モデルであるAsclepius を導入できることを誇りに思っています。このモデルは合成臨床ノートに基づいてトレーニングされているため、Huggingface 経由で一般にアクセスできます。 CAMEL の使用を検討している場合は、代わりに Asclepius に切り替えることを強くお勧めします。詳細については、このリンクをご覧ください。
LLaMA を強化した臨床適応モデルCAMEL を紹介します。 LLaMA の基礎として、 CAMEL はMIMIC-III および MIMIC-IV の臨床ノートでさらに事前トレーニングされ、臨床指示に基づいて微調整されています (図 2)。 GPT-4 評価による予備評価では、 CAMEL がOpenAI の GPT-3.5 の品質の 96% 以上を達成していることが実証されました (図 1)。ソース データのデータ使用ポリシーに従って、指示データセットとモデルの両方が認証されたアクセスを使用して PhysioNet 上に公開されます。複製を容易にするために、すべてのコードも公開し、個々の医療機関が独自の臨床ノートを使用してモデルを再現できるようにします。詳細については、ブログ投稿を参照してください。
MIMIC および i2b2 データセットのライセンスの問題により、命令データセットとチェックポイントを公開できません。数週間以内にモデルとデータを physionet 経由で公開する予定です。
conda create -n camel python=3.9 -y
conda activate camel
conda install pytorch torchvision torchaudio pytorch-cuda=11.8 -c pytorch -c nvidia -y
pip install pandarallel pandas jupyter numpy datasets sentencepiece openai fire
pip install git+https://github.com/huggingface/transformers.git@871598be552c38537bc047a409b4a6840ba1c1e4
トークンで連結します。$ python pretraining_preprocess/mimiciii_preproc.py --mimiciii_note_path {MIMICIII_NOTE_PATH} --output_path {OUTPUT_PATH}
$ python pretraining_preprocess/mimiciv_preproc.py --discharge_note_path {DISCHAGE_NOTE_PATH} --radiology_note_path {RADIOLOGY_NOTE_PATH} --output_path {OUTPUT_PATH}
$ python pretraining_preprocess/tokenize_data.py --data_path {DATA_PATH} --save_path {SAVE_PATH}
$ torchrun --nproc_per_node=8 --master_port={YOUR_PORT}
src/train.py
--model_name_or_path "decapoda-research/llama-7b-hf"
--data_path {DATA_FILE}
--bf16 True
--output_dir ./checkpoints
--num_train_epochs 1
--per_device_train_batch_size 2
--per_device_eval_batch_size 2
--gradient_accumulation_steps 8
--evaluation_strategy "no"
--save_strategy "steps"
--save_steps 1000
--learning_rate 2e-5
--weight_decay 0.
--warmup_ratio 0.03
--lr_scheduler_type "cosine"
--logging_steps 1
--fsdp "full_shard auto_wrap"
--fsdp_transformer_layer_cls_to_wrap 'LlamaDecoderLayer'
--tf32 True
--model_max_length 2048
--gradient_checkpointing True
注: 手順を生成するには、認定された Azure Openai API を使用する必要があります。
命令の生成
OPENAI_API_KEY
OPENAI_API_BASE
OPENAI_DEPLOYMENT_NAME
$ python instructino/preprocess_note.py
$ python instruction/de_id_gen.py --input {PREPROCESSED_NOTES} --output {OUTPUT_FILE_1} --mode inst
$ python instruction/de_id_postprocess.py --input {OUTPUT_FILE_1} --output {OUTPUT_FILE_2}
$ python instruction/de_id_gen.py --input {OUTPUT__FILE_2} --output {inst_output/OUTPUT_FILE_deid} --mode ans
$ python instruction/instructtion_gen.py --input {PREPROCESSED_NOTES} --output {inst_output/OUTPUT_FILE} --source {mimiciii, mimiciv, i2b2}
$ python instruction/merge_data.py --data_path {inst_output} --output {OUTPUT_FILE_FINAL}
実行命令の微調整
nproc_per_node
とgradient accumulate step
を調整します (グローバル バッチ サイズ = 128)。 $ torchrun --nproc_per_node=8 --master_port={YOUR_PORT}
src/instruction_ft.py
--model_name_or_path "decapoda-research/llama-7b-hf"
--data_path {OUTPUT_FILE_FINAL}
--bf16 True
--output_dir ./checkpoints
--num_train_epochs 3
--per_device_train_batch_size 2
--per_device_eval_batch_size 2
--gradient_accumulation_steps 8
--evaluation_strategy "no"
--save_strategy "epoch"
--learning_rate 2e-5
--weight_decay 0.
--warmup_ratio 0.03
--lr_scheduler_type "cosine"
--logging_steps 1
--fsdp "full_shard auto_wrap"
--fsdp_transformer_layer_cls_to_wrap 'LlamaDecoderLayer'
--tf32 True
--model_max_length 2048
--gradient_checkpointing True
--ddp_timeout 18000
MTSamples でモデルを実行する
CUDA_VISIBLE_DEVICES=0 python src/evaluate.py
--model_name {MODEL_PATH}
--data_path eval/mtsamples_instructions.json
--output_path {OUTPUT_PATH}
eval
フォルダー内のmtsamples_results.json
として提供されます。評価のために GPT-4 を実行する
python eval/gpt4_evaluate.py --input {INPUT_PATH} --output {OUTPUT_PATH}
@misc{CAMEL,
title = {CAMEL : Clinically Adapted Model Enhanced from LLaMA},
author = {Sunjun Kweon and Junu Kim and Seongsu Bae and Eunbyeol Cho and Sujeong Im and Jiyoun Kim and Gyubok Lee and JongHak Moon and JeongWoo Oh and Edward Choi},
month = {May},
year = {2023}
publisher = {GitHub},
journal = {GitHub repository},
howpublished = {url{https://github.com/starmpcc/CAMEL}},
}