

本文為英文版的機器翻譯版本，如內容有任何歧義或不一致之處，概以英文版為準。

# 針對醫療保健和生命科學使用案例使用大型語言模型
<a name="llms"></a>

這說明如何將大型語言模型 (LLMs) 用於醫療保健和生命科學應用程式。有些使用案例需要使用大型語言模型來產生式 AI 功能。即使是最先進的 state-of-the-art LLMs 也有優點和限制，本節中的建議旨在協助您實現目標結果。

您可以使用決策路徑來判斷適合您使用案例的適當 LLM 解決方案，並考量領域知識和可用訓練資料等因素。此外，本節討論熱門的預先訓練醫療 LLMs以及其選擇和使用的最佳實務。它還討論了複雜、高效能解決方案和更簡單、成本更低方法之間的權衡。

## LLM 的使用案例
<a name="llm-use-cases"></a>

Amazon Comprehend Medical 可以執行特定的 NLP 任務。如需詳細資訊，請參閱[Amazon Comprehend Medical 的使用案例](comprehend-medical.md#comprehend-medical-use-cases)。

進階醫療保健和生命科學使用案例可能需要 LLM 的邏輯和生成式 AI 功能，例如：
+ 分類自訂醫療實體或文字類別
+ 回答臨床問題
+ 摘要醫療報告
+ 從醫療資訊產生和偵測洞見

## 自訂方法
<a name="llm-customization"></a>

了解 LLMs的實作方式至關重要。LLMs通常使用數十億個參數進行訓練，包括來自許多網域的訓練資料。此訓練可讓 LLM 處理最廣義的任務。不過，當需要特定領域的知識時，通常會出現挑戰。醫療保健和生命科學領域知識的範例包括診所代碼、醫療術語，以及產生準確答案所需的健康資訊。因此，針對這些使用案例使用 LLM 為原樣 （不補充網域知識的零鏡頭提示） 可能會導致結果不準確。您可以使用多種常用方法來克服此挑戰：提示工程、擷取增強生成 (RAG) 和微調。

### 提示詞工程
<a name="llm-customization-prompt-engineering"></a>

*提示詞工程*是引導生成式 AI 解決方案，透過調整 LLM 的輸入來建立所需輸出的程序。透過使用相關內容建構精確的提示，可以引導模型完成需要推理的特殊醫療保健任務。有效的提示詞工程可以大幅改善醫療保健使用案例的模型效能，而不需要修改模型。如需提示詞工程的詳細資訊，請參閱[使用 Amazon Bedrock 實作進階提示詞工程](https://aws.amazon.com/blogs/machine-learning/implementing-advanced-prompt-engineering-with-amazon-bedrock/) (AWS 部落格文章）。少量的提示和chain-of-thought提示是可用於提示工程的技術。

#### 少量樣本提示
<a name="few-shot-prompting"></a>

少量擷取提示是一種技術，您可以在要求 LLM 執行類似任務之前，提供一些所需的輸入輸出範例給 LLM。在醫療保健環境中，這種方法對於特殊任務特別有用，例如醫療實體辨識或臨床筆記摘要。透過在提示中包含 3-5 個高品質範例，您可以大幅提升模型對醫學術語和領域特定模式的理解。如需少量擷取提示的範例，請參閱 [Amazon Bedrock 中 LLMs 的少量擷取提示工程和微調 ](https://aws.amazon.com/blogs/machine-learning/few-shot-prompt-engineering-and-fine-tuning-for-llms-in-amazon-bedrock/)(AWS 部落格文章）。

例如，當您從臨床筆記擷取藥物用量時，您可以提供不同表示法樣式的範例，以協助模型辨識醫療保健專業人員記錄處方方式的變化。此方法在使用標準化文件格式或資料中存在一致模式時特別有效。

#### Chain-of-thought提示
<a name="chain-of-thought-prompting"></a>

*Chain-of-thought(CoT) 提示*會引導 LLM 完成step-by-step推理程序。這使得它對於複雜的醫療決策支援和診斷推理任務很有價值。透過在分析臨床案例時明確指示模型「逐步思考」，您可以改善其遵循醫療推理通訊協定的能力，並減少診斷錯誤。

當臨床推理需要多個邏輯步驟，例如差異診斷或治療規劃時，這種技術會更好。不過，在處理模型訓練資料之外的高度專業化醫學知識時，或需要絕對精確度才能做出重大照護決策時，此方法會有限制。

在這些情況下，結合 CoT 與另一種方法可以產生更好的結果。其中一個選項是 結合 CoT 與自我一致性提示。如需詳細資訊，請參閱[使用 Amazon Bedrock 上的自我一致性提示增強生成語言模型的效能 ](https://aws.amazon.com/blogs/machine-learning/enhance-performance-of-generative-language-models-with-self-consistency-prompting-on-amazon-bedrock/)(AWS 部落格文章）。另一個選項是結合推理架構，例如 ReAct 提示和 RAG。如需詳細資訊，請參閱[使用 RAG 和 ReAct 提示開發進階生成式 AI 聊天式助理](https://docs.aws.amazon.com/prescriptive-guidance/latest/patterns/develop-advanced-generative-ai-chat-based-assistants-by-using-rag-and-react-prompting.html) (AWS 方案指引）。

### 檢索增強生成
<a name="llm-customization-rag"></a>

*擷取增強生成 (RAG)* 是一種生成式 AI 技術，其中 LLM 會在產生回應之前參考訓練資料來源以外的授權資料來源。RAG 系統可以從知識來源擷取醫學本質資訊 （例如國際疾病分類、國家藥物檔案和醫學主題標題）。這可為 LLM 提供額外的內容，以支援醫療 NLP 任務。

如 [結合 Amazon Comprehend Medical 與大型語言模型](comprehend-medical-rag.md)章節所述，您可以使用 RAG 方法從 Amazon Comprehend Medical 擷取內容。其他常見的知識來源包括存放在資料庫服務中的醫療網域資料，例如 Amazon OpenSearch Service、Amazon Kendra 或 Amazon Aurora。從這些知識來源擷取資訊可能會影響擷取效能，尤其是使用向量資料庫的語意查詢。

儲存和擷取特定網域知識的另一個選項是在您的 RAG 工作流程中使用 [Amazon Q Business](https://docs.aws.amazon.com/amazonq/latest/qbusiness-ug/what-is.html)。Amazon Q Business 可以為內部文件儲存庫或面向公眾的網站編製索引 （例如 [CMS.gov](https://cms.gov/) for ICD-10 data)。然後，Amazon Q Business 可以從這些來源擷取相關資訊，再將查詢傳遞至 LLM。

有多種方式可建置自訂 RAG 工作流程。例如，從知識來源擷取資料的方法有很多。為了簡化，我們建議使用向量資料庫的常見擷取方法，例如 Amazon OpenSearch Service，將知識儲存為內嵌項目。這需要您使用內嵌模型，例如句子轉換器，來產生查詢和向量資料庫中存放知識的內嵌。

如需全受管和自訂 RAG 方法的詳細資訊，請參閱 [上的擷取增強生成選項和架構 AWS](https://docs.aws.amazon.com/prescriptive-guidance/latest/retrieval-augmented-generation-options/introduction.html)。

### 微調
<a name="llm-customization-fine-tuning"></a>

*微調*現有模型需要採用 LLM，例如 Amazon Titan、Mistral 或 Llama 模型，然後根據您的自訂資料調整模型。微調有多種技術，其中大部分只涉及修改幾個參數，而不是修改模型中的所有參數。這稱為*參數效率微調 (PEFT)*。如需詳細資訊，請參閱 GitHub 上的 [Hugging Face PEFT](https://github.com/huggingface/peft)。

以下是兩種常見的使用案例，您可以選擇微調醫療 NLP 任務的 LLM：
+ **生成式任務** – 以解碼器為基礎的模型會執行生成式 AI 任務。AI/ML 從業人員使用 Ground Truth 資料來微調現有的 LLM。例如，您可以使用公有醫療問題回答資料集 [MedQuAD](https://github.com/abachaa/MedQuAD) 來訓練 LLM。當您調用對微調 LLM 的查詢時，您不需要 RAG 方法來提供 LLM 的其他內容。
+ **內嵌** – 以編碼器為基礎的模型透過將文字轉換為數值向量來產生內嵌。這些編碼器型模型通常稱為*內嵌模型*。*句子轉換器模型*是針對句子最佳化的特定內嵌模型類型。目標是從輸入文字產生內嵌。然後，內嵌會用於語意分析或擷取任務。若要微調內嵌模型，您必須擁有可用作訓練資料的醫學知識，例如文件。這是以相似性或情緒為基礎的文字對來完成，以微調句子轉換器模型。如需詳細資訊，請參閱在 Hugging Face [上使用句子轉換器 v3 訓練和微調內嵌模型](https://huggingface.co/blog/train-sentence-transformers)。

您可以使用 [Amazon SageMaker Ground Truth](https://docs.aws.amazon.com/sagemaker/latest/dg/sms.html) 來建置高品質、已標記的訓練資料集。您可以使用 Ground Truth 的已標籤資料集輸出，來訓練您自己的模型。您也可以使用輸出作為 Amazon SageMaker AI 模型的訓練資料集。如需具名實體辨識、單一標籤文字分類和多標籤文字分類的詳細資訊，請參閱 Amazon SageMaker AI 文件中的[使用 Ground Truth 文字標籤](https://docs.aws.amazon.com/sagemaker/latest/dg/sms-label-text.html)。

如需微調的詳細資訊，請參閱本指南[在醫療保健領域微調大型語言模型](fine-tuning.md)中的 。

## 選擇 LLM
<a name="llm-selection"></a>

[Amazon Bedrock](https://docs.aws.amazon.com/bedrock/latest/userguide/what-is-bedrock.html) 是評估高效能 LLMs的建議起點。如需詳細資訊，請參閱 [Amazon Bedrock 中支援的基礎模型](https://docs.aws.amazon.com/bedrock/latest/userguide/models-supported.html)。您可以在 Amazon Bedrock 中使用模型評估任務，以比較來自多個輸出的輸出，然後選擇最適合您的使用案例的模型。如需詳細資訊，請參閱《[Amazon Bedrock 文件》中的使用 Amazon Bedrock 評估選擇效能最佳的模型](https://docs.aws.amazon.com/bedrock/latest/userguide/model-evaluation.html)。

有些 LLMs對醫療網域資料的訓練有限。如果您的使用案例需要微調 Amazon Bedrock 不支援的 LLM 或 LLM，請考慮使用 [Amazon SageMaker AI](https://docs.aws.amazon.com/sagemaker/latest/dg/whatis.html)。在 SageMaker AI 中，您可以使用微調的 LLM，或選擇已針對醫療網域資料訓練的自訂 LLM。

下表列出已針對醫療網域資料進行訓練LLMs。


| 
| 
| LLM | 任務​ | 知識 | Architecture | 
| --- |--- |--- |--- |
| [BioBERT](https://github.com/dmis-lab/biobert) | 資訊擷取、文字分類和具名實體辨識 | 來自 PubMed 的摘要、來自 PubMedCentral 的全文文章，以及一般網域知識 | 編碼器 | 
| [ClinicalBERT](https://github.com/kexinhuang12345/clinicalBERT) | 資訊擷取、文字分類和具名實體辨識 | 大型、多中心資料集，以及來自電子運作狀態記錄 (EHR) 系統超過 3，000，000 個病患記錄 | 編碼器 | 
| [ClinicalGPT](https://huggingface.co/medicalai/ClinicalGPT-base-zh) | 摘要、問答和文字產生 | 廣泛且多樣化的醫療資料集，包括醫療記錄、領域特定知識和多回合對話諮詢 | 解碼器 | 
| [GatorTron-OG](https://catalog.ngc.nvidia.com/orgs/nvidia/teams/clara/models/gatortron_og) | 摘要、問答、文字產生和資訊擷取 | 臨床備註和生物醫學文獻 | 編碼器 | 
| [Med-BERT](https://github.com/ZhiGroup/Med-BERT) | 資訊擷取、文字分類和具名實體辨識 | 大型醫療文字資料集、臨床筆記、研究論文和醫療保健相關文件 | 編碼器 | 
| [Med-PaLM](https://sites.research.google/med-palm/) | 醫學用途的問答 | 醫療和生物醫學文字的資料集 | 解碼器 | 
| [medAlpaca](https://github.com/kbressem/medAlpaca) | 問答和醫療對話任務 | 各種醫療文字，包括醫療閃存卡、Wiki 和對話資料集等資源 | 解碼器 | 
| [BiomedBERT](https://huggingface.co/microsoft/BiomedNLP-BiomedBERT-base-uncased-abstract-fulltext) | 資訊擷取、文字分類和具名實體辨識 | 來自 PubMed 的獨家摘要和來自 PubMedCentral 的全文文章 | 編碼器 | 
| [BioMedLM](https://github.com/stanford-crfm/BioMedLM) | 摘要、問答和文字產生 | 來自 PubMed 知識來源的生物醫學文獻 | 解碼器 | 

以下是使用預先訓練醫療 LLMs最佳實務：
+ 了解訓練資料及其與醫療 NLP 任務的相關性。
+ 識別 LLM 架構及其用途。編碼器適用於內嵌和 NLP 任務。解碼器用於產生任務。
+ 評估託管預先訓練醫療 LLM 的基礎設施、效能和成本需求。
+ 如果需要微調，請確保訓練資料的正確基本事實或知識。請確定您遮罩或修改任何個人身分識別資訊 (PII) 或受保護醫療資訊 (PHI)。

在知識或預期使用案例方面，實際醫療 NLP 任務可能與預先訓練LLMs 不同。如果特定網域的 LLM 不符合您的評估基準，您可以使用自己的資料集微調 LLM，也可以訓練新的基礎模型。訓練新的基礎模型是遠大且通常昂貴的任務。對於大多數使用案例，我們建議微調現有模型。

當您使用或微調預先訓練的醫療 LLM 時，請務必解決基礎設施、安全和護欄的問題。

### 基礎設施
<a name="llm-selection-infrastructure"></a>

相較於使用 Amazon Bedrock 進行隨需或批次推論，託管預先訓練的醫療 LLMs（通常來自 Hugging Face) 需要大量資源。若要託管預先訓練的醫療 LLMs，通常會使用在具有一或多個 GPUs 的 Amazon Elastic Compute Cloud (Amazon EC2) 執行個體上執行的 Amazon SageMaker AI 映像，例如用於加速運算的 ml.g5 執行個體或 ml.inf2 執行個體 AWS Inferentia。Amazon EC2 這是因為 LLMs會耗用大量記憶體和磁碟空間。

### 安全與護欄
<a name="llm-selection-guardrails"></a>

根據您的業務合規要求，請考慮使用 Amazon Comprehend 和 Amazon Comprehend Medical 來遮罩或修訂訓練資料中的個人身分識別資訊 (PII) 和受保護醫療資訊 (PHI)。這有助於防止 LLM 在產生回應時使用機密資料。

我們建議您考慮並評估生成式 AI 應用程式中的偏差、公平性和幻覺。無論您是使用預先存在的 LLM 還是微調 LLM，請實作護欄以防止有害的回應。*護欄*是您根據生成式 AI 應用程式需求和負責任的 AI 政策自訂的保護措施。例如，您可以使用 [Amazon Bedrock 護欄](https://docs.aws.amazon.com/bedrock/latest/userguide/guardrails.html)。