้กน็›ฎๆ–‡ไปถๅคน

ๆ–‡ไปถ
wehub-resource-sync e06fe8e8c6
Secret Leaks / trufflehog (push) Failing after 1s
Build documentation / build (push) Failing after 1s
Build documentation / build_other_lang (push) Failing after 0s
CodeQL Security Analysis / CodeQL Analysis (push) Failing after 0s
PR CI / pr-ci (push) Failing after 1s
Slow tests on important models (on Push - A10) / Get all modified files (push) Failing after 1s
Slow tests on important models (on Push - A10) / Model CI (push) Has been skipped
Self-hosted runner (benchmark) / Benchmark (aws-g5-4xlarge-cache) (push) Has been cancelled
New model PR merged notification / Notify new model (push) Has been cancelled
Update Transformers metadata / build_and_package (push) Has been cancelled
chore: import upstream snapshot with attribution
2026-07-13 11:57:37 +08:00

9.5 KiB

BioGPT biogpt

๊ฐœ์š” overview

BioGPT๋Š” Renqian Luo, Liai Sun, Yingce Xia, Tao Qin, Sheng Zhang, Hoifung Poon, Tie-Yan Liu์— ์˜ํ•ด BioGPT: generative pre-trained transformer for biomedical text generation and mining ์—์„œ ์ œ์•ˆ๋œ ๋ชจ๋ธ์ž…๋‹ˆ๋‹ค. BioGPT๋Š” ์ƒ๋ฌผ์˜ํ•™ ํ…์ŠคํŠธ ์ƒ์„ฑ๊ณผ ๋งˆ์ด๋‹์„ ์œ„ํ•ด ๋„๋ฉ”์ธ์— ํŠนํ™”๋œ ์ƒ์„ฑํ˜• ์‚ฌ์ „ ํ•™์Šต ํŠธ๋žœ์Šคํฌ๋จธ ์–ธ์–ด ๋ชจ๋ธ์ž…๋‹ˆ๋‹ค. BioGPT๋Š” ํŠธ๋žœ์Šคํฌ๋จธ ์–ธ์–ด ๋ชจ๋ธ ๊ตฌ์กฐ๋ฅผ ๋”ฐ๋ฅด๋ฉฐ, 1,500๋งŒ ๊ฐœ์˜ PubMed ์ดˆ๋ก์„ ์ด์šฉํ•ด ์ฒ˜์Œ๋ถ€ํ„ฐ ํ•™์Šต๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

๋…ผ๋ฌธ์˜ ์ดˆ๋ก์€ ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค:

์ƒ๋ฌผ์˜ํ•™ ๋ถ„์•ผ์—์„œ ์‚ฌ์ „ ํ•™์Šต๋œ ์–ธ์–ด ๋ชจ๋ธ์€ ์ผ๋ฐ˜ ์ž์—ฐ์–ด ์ฒ˜๋ฆฌ ๋ถ„์•ผ์—์„œ์˜ ์„ฑ๊ณต์— ์˜๊ฐ์„ ๋ฐ›์•„ ์ ์  ๋” ๋งŽ์€ ์ฃผ๋ชฉ์„ ๋ฐ›๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ์ผ๋ฐ˜ ์–ธ์–ด ๋ถ„์•ผ์—์„œ ์‚ฌ์ „ ํ•™์Šต๋œ ์–ธ์–ด ๋ชจ๋ธ์˜ ๋‘ ๊ฐ€์ง€ ์ฃผ์š” ๊ณ„ํ†ต์ธ BERT(๋ฐ ๊ทธ ๋ณ€ํ˜•)์™€ GPT(๋ฐ ๊ทธ ๋ณ€ํ˜•) ์ค‘ ์ฒซ ๋ฒˆ์งธ๋Š” ์ƒ๋ฌผ์˜ํ•™ ๋ถ„์•ผ์—์„œ BioBERT์™€ PubMedBERT์™€ ๊ฐ™์ด ๊ด‘๋ฒ”์œ„ํ•˜๊ฒŒ ์—ฐ๊ตฌ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ์ด๋“ค์€ ๋‹ค์–‘ํ•œ ๋ถ„๋ฅ˜ ๊ธฐ๋ฐ˜์˜ ์ƒ๋ฌผ์˜ํ•™ ์ž‘์—…์—์„œ ํฐ ์„ฑ๊ณต์„ ๊ฑฐ๋‘์—ˆ์ง€๋งŒ, ์ƒ์„ฑ ๋Šฅ๋ ฅ์˜ ๋ถ€์กฑ์€ ๊ทธ๋“ค์˜ ์ ์šฉ ๋ฒ”์œ„๋ฅผ ์ œํ•œํ–ˆ์Šต๋‹ˆ๋‹ค. ๋ณธ ๋…ผ๋ฌธ์—์„œ๋Š” ๋Œ€๊ทœ๋ชจ ์ƒ๋ฌผ์˜ํ•™ ๋ฌธํ—Œ์„ ์‚ฌ์ „ ํ•™์Šตํ•œ ๋„๋ฉ”์ธ ํŠนํ™” ์ƒ์„ฑํ˜• ํŠธ๋žœ์Šคํฌ๋จธ ์–ธ์–ด ๋ชจ๋ธ์ธ BioGPT๋ฅผ ์ œ์•ˆํ•ฉ๋‹ˆ๋‹ค. ์šฐ๋ฆฌ๋Š” 6๊ฐœ์˜ ์ƒ๋ฌผ์˜ํ•™ ์ž์—ฐ์–ด ์ฒ˜๋ฆฌ ์ž‘์—…์—์„œ BioGPT๋ฅผ ํ‰๊ฐ€ํ•œ ๊ฒฐ๊ณผ, ๋Œ€๋ถ€๋ถ„์˜ ์ž‘์—…์—์„œ ์ด์ „ ๋ชจ๋ธ๋ณด๋‹ค ์šฐ์ˆ˜ํ•œ ์„ฑ๋Šฅ์„ ๋ณด์˜€์Šต๋‹ˆ๋‹ค. ํŠนํžˆ, BC5CDR, KD-DTI, DDI ์—”๋“œ-ํˆฌ-์—”๋“œ ๊ด€๊ณ„ ์ถ”์ถœ ์ž‘์—…์—์„œ ๊ฐ๊ฐ 44.98%, 38.42%, 40.76%์˜ F1 ์ ์ˆ˜๋ฅผ ๊ธฐ๋กํ•˜์˜€์œผ๋ฉฐ, PubMedQA์—์„œ 78.2%์˜ ์ •ํ™•๋„๋ฅผ ๋‹ฌ์„ฑํ•ด ์ƒˆ๋กœ์šด ๊ธฐ๋ก์„ ์„ธ์› ์Šต๋‹ˆ๋‹ค. ๋˜ํ•œ ํ…์ŠคํŠธ ์ƒ์„ฑ์— ๋Œ€ํ•œ ์‚ฌ๋ก€ ์—ฐ๊ตฌ๋Š” ์ƒ๋ฌผ์˜ํ•™ ์šฉ์–ด์— ๋Œ€ํ•œ ์œ ์ฐฝํ•œ ์„ค๋ช…์„ ์ƒ์„ฑํ•˜๋Š” ๋ฐ ์žˆ์–ด BioGPT์˜ ์žฅ์ ์„ ๋”์šฑ ์ž…์ฆํ–ˆ์Šต๋‹ˆ๋‹ค.

์ด ๋ชจ๋ธ์€ kamalkraj์— ์˜ํ•ด ๊ธฐ์—ฌ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ์›๋ณธ ์ฝ”๋“œ๋Š” ์—ฌ๊ธฐ์—์„œ ์ฐพ์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์‚ฌ์šฉ ํŒ usage-tips

  • BioGPT๋Š” ์ ˆ๋Œ€์  ์œ„์น˜ ์ž„๋ฒ ๋”ฉ(absolute position embedding)์„ ์‚ฌ์šฉํ•˜๋ฏ€๋กœ, ์ž…๋ ฅ์„ ์™ผ์ชฝ์ด ์•„๋‹Œ ์˜ค๋ฅธ์ชฝ์—์„œ ํŒจ๋”ฉํ•˜๋Š” ๊ฒƒ์ด ๊ถŒ์žฅ๋ฉ๋‹ˆ๋‹ค.
  • BioGPT๋Š” ์ธ๊ณผ์  ์–ธ์–ด ๋ชจ๋ธ๋ง(Causal Langague Modeling, CLM) ๋ชฉํ‘œ๋กœ ํ•™์Šต๋˜์—ˆ๊ธฐ ๋•Œ๋ฌธ์—, ๋‹ค์Œ ํ† ํฐ์„ ์˜ˆ์ธกํ•˜๋Š” ๋ฐ ๊ฐ•๋ ฅํ•œ ์„ฑ๋Šฅ์„ ๋ณด์ž…๋‹ˆ๋‹ค. ์ด ๊ธฐ๋Šฅ์„ ํ™œ์šฉํ•˜์—ฌ BioGPT๋Š” ๊ตฌ๋ฌธ์ ์œผ๋กœ ์ผ๊ด€๋œ ํ…์ŠคํŠธ๋ฅผ ์ƒ์„ฑํ•  ์ˆ˜ ์žˆ์œผ๋ฉฐ, ์˜ˆ์‹œ ์Šคํฌ๋ฆฝํŠธ run_generation.py์—์„œ ์ด๋ฅผ ํ™•์ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  • ์ด ๋ชจ๋ธ์€ past_key_values(PyTorch ์šฉ)๋ฅผ ์ž…๋ ฅ์œผ๋กœ ๋ฐ›์„ ์ˆ˜ ์žˆ๋Š”๋ฐ, ์ด๋Š” ์ด์ „์— ๊ณ„์‚ฐ๋œ ํ‚ค/๊ฐ’ ์–ดํ…์…˜ ์Œ์ž…๋‹ˆ๋‹ค. ์ด ๊ฐ’์„ ์‚ฌ์šฉํ•˜๋ฉด ํ…์ŠคํŠธ ์ƒ์„ฑ ์ค‘ ์ด๋ฏธ ๊ณ„์‚ฐ๋œ ๊ฐ’์„ ๋‹ค์‹œ ๊ณ„์‚ฐํ•˜์ง€ ์•Š๋„๋ก ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. PyTorch์—์„œ past_key_values ์ธ์ˆ˜๋Š” BioGptForCausalLM.forward() ๋ฉ”์†Œ๋“œ์—์„œ ์ž์„ธํžˆ ์„ค๋ช…๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค.

Scaled Dot Product Attention(SDPA) ์‚ฌ์šฉ using-scaled-dot-product-attention-sdpa

PyTorch๋Š” torch.nn.functional์˜ ์ผ๋ถ€๋กœ ์Šค์ผ€์ผ๋œ ์ ๊ณฑ ์–ดํ…์…˜(SDPA) ์—ฐ์‚ฐ์ž๋ฅผ ๊ธฐ๋ณธ์ ์œผ๋กœ ํฌํ•จํ•ฉ๋‹ˆ๋‹ค. ์ด ํ•จ์ˆ˜๋Š” ์ž…๋ ฅ๊ณผ ์‚ฌ์šฉ ์ค‘์ธ ํ•˜๋“œ์›จ์–ด์— ๋”ฐ๋ผ ์—ฌ๋Ÿฌ ๊ตฌํ˜„์„ ์ ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ž์„ธํ•œ ๋‚ด์šฉ์€ ๊ณต์‹ ๋ฌธ์„œ ๋˜๋Š” GPU ์ถ”๋ก  ํŽ˜์ด์ง€๋ฅผ ์ฐธ์กฐํ•˜์„ธ์š”.

torch>=2.1.1์—์„œ ๊ตฌํ˜„์ด ๊ฐ€๋Šฅํ•œ ๊ฒฝ์šฐ SDPA๋Š” ๊ธฐ๋ณธ์ ์œผ๋กœ ์‚ฌ์šฉ๋˜๋ฉฐ, attn_implementation="sdpa"๋ฅผ from_pretrained()์—์„œ ์„ค์ •ํ•˜์—ฌ SDPA ์‚ฌ์šฉ์„ ๋ช…์‹œ์ ์œผ๋กœ ์š”์ฒญํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

from transformers import BioGptForCausalLM
model = BioGptForCausalLM.from_pretrained("microsoft/biogpt", attn_implementation="sdpa", dtype=torch.float16)

NVIDIA GeForce RTX 2060-8GB, PyTorch 2.3.1, Ubuntu 20.04 ํ™˜๊ฒฝ์—์„œ float16 ๋ฐ CausalLM ํ—ค๋“œ๊ฐ€ ์žˆ๋Š” microsoft/biogpt ๋ชจ๋ธ๋กœ ๋กœ์ปฌ ๋ฒค์น˜๋งˆํฌ๋ฅผ ์ˆ˜ํ–‰ํ•œ ๊ฒฐ๊ณผ, ํ›ˆ๋ จ ์ค‘ ๋‹ค์Œ๊ณผ ๊ฐ™์€ ์†๋„ ํ–ฅ์ƒ์„ ํ™•์ธํ–ˆ์Šต๋‹ˆ๋‹ค.

์ตœ์ ์˜ ์†๋„ ํ–ฅ์ƒ์„ ์œ„ํ•ด ๋ชจ๋ธ์„ ๋ฐ˜์ •๋ฐ€๋„(์˜ˆ: torch.float16 ๋˜๋Š” torch.bfloat16)๋กœ ๋กœ๋“œํ•˜๋Š” ๊ฒƒ์ด ์ข‹์Šต๋‹ˆ๋‹ค.

num_training_steps batch_size seq_len is cuda Time per batch (eager - s) Time per batch (sdpa - s) Speedup (%) Eager peak mem (MB) sdpa peak mem (MB) Mem saving (%)
100 1 128 False 0.038 0.031 21.301 1601.862 1601.497 0.023
100 1 256 False 0.039 0.034 15.084 1624.944 1625.296 -0.022
100 2 128 False 0.039 0.033 16.820 1624.567 1625.296 -0.045
100 2 256 False 0.065 0.059 10.255 1672.164 1672.164 0.000
100 4 128 False 0.062 0.058 6.998 1671.435 1672.164 -0.044
100 4 256 False 0.113 0.100 13.316 2350.179 1848.435 27.144
100 8 128 False 0.107 0.098 9.883 2098.521 1848.435 13.530
100 8 256 False 0.222 0.196 13.413 3989.980 2986.492 33.601

NVIDIA GeForce RTX 2060-8GB, PyTorch 2.3.1, Ubuntu 20.04 ํ™˜๊ฒฝ์—์„œ float16 ๋ฐ AutoModel ํ—ค๋“œ๊ฐ€ ์žˆ๋Š” microsoft/biogpt ๋ชจ๋ธ๋กœ ์ถ”๋ก  ์ค‘ ๋‹ค์Œ๊ณผ ๊ฐ™์€ ์†๋„ ํ–ฅ์ƒ์„ ํ™•์ธํ–ˆ์Šต๋‹ˆ๋‹ค.

num_batches batch_size seq_len is cuda is half use mask Per token latency eager (ms) Per token latency SDPA (ms) Speedup (%) Mem eager (MB) Mem BT (MB) Mem saved (%)
50 1 64 True True True 0.115 0.098 17.392 716.998 716.998 0.000
50 1 128 True True True 0.115 0.093 24.640 730.916 730.916 0.000
50 2 64 True True True 0.114 0.096 19.204 730.900 730.900 0.000
50 2 128 True True True 0.117 0.095 23.529 759.262 759.262 0.000
50 4 64 True True True 0.113 0.096 18.325 759.229 759.229 0.000
50 4 128 True True True 0.186 0.178 4.289 816.478 816.478 0.000

๋ฆฌ์†Œ์Šค resources

BioGptConfig transformers.BioGptConfig

autodoc BioGptConfig

BioGptTokenizer transformers.BioGptTokenizer

autodoc BioGptTokenizer - save_vocabulary

BioGptModel transformers.BioGptModel

autodoc BioGptModel - forward

BioGptForCausalLM transformers.BioGptForCausalLM

autodoc BioGptForCausalLM - forward

BioGptForTokenClassification transformers.BioGptForTokenClassification

autodoc BioGptForTokenClassification - forward

BioGptForSequenceClassification transformers.BioGptForSequenceClassification

autodoc BioGptForSequenceClassification - forward