搜尋
首頁科技週邊人工智慧抹布與微調:一個全面的教程,帶有實際示例

>像GPT-4這樣的大多數大型語言模型(LLMS)經過廣泛的,通常過時的數據集培訓。儘管他們擅長回答一般問題,但他們在疑問最近的新聞,最新發展和特定領域的主題方面掙扎。在這種情況下,它們可能會幻覺或提供不准確的反應。 

儘管出現了諸如Claude 3.5十四行詩之類的表現更好的模型,但我們仍然需要進行微調來生成自定義響應,或者使用檢索結果(RAG)系統來為基本模型提供額外的背景。 在本教程中,我們將探索抹布和微調,這是兩種不同的技術,用於改善LLM響應。我們將檢查它們的差異,並通過評估結果將理論付諸實踐。 

此外,我們還將深入研究混合技術,將微調模型與抹布系統相結合,以利用兩全其美的世界。最後,我們將學習如何根據特定用例和要求在這三種方法之間進行選擇。

抹布和微調

概述 抹布和微調技術改善了域特異性查詢的響應生成,但它們本質上是完全不同的技術。讓我們了解它們。

>檢索增強生成(抹布)

>檢索增強的生成是一個使用外部數據源(例如GPT-4O)成為上下文感知的大型語言模型的過程。它是獵犬和發電機的組合。獵犬從Internet或Vector數據庫中獲取數據,並使用原始用戶的查詢將其提供給生成器。發電機使用其他上下文來生成高度準確且相關的響應。  

要了解更多信息,請閱讀我們的文章,什麼是檢索增強發電(RAG)?基礎知識的指南,並了解RAG應用程序的內部工作和各種用例。 

微調

微調是使用特定域數據集對預訓練模型進行調整的過程。預先訓練的模型在從互聯網上廢棄的多個大型一般數據集上進行了培訓。他們擅長回答一般問題,但是在回答特定領域的問題時,他們會掙扎甚至幻覺。 

例如,

預先訓練的模型可能會精通一般的對話能力,但是當被問及復雜的醫療程序或法律先例時可能會產生錯誤的答案。 

在醫療或法律數據集上對其進行微調,使該模型能夠以更準確和相關性理解和回答這些領域的問題。

遵循微調LLMS教程的介紹性指南,以了解使用視覺指南自定義預訓練的模型。 

rag vs.微調

>我們已經了解了每種方法來改善LLMS的響應生成。讓我們檢查一下以更好地理解它們的差異。 

1。學習樣式

rag使用動態學習樣式,允許語言模型訪問和使用來自數據庫,Internet甚至API的最新和最準確的數據。這種方法可確保生成的響應始終是最新和相關的。

>微調涉及靜態學習,該模型在訓練階段通過新數據集學習。儘管此方法允許該模型適應特定於域的響應生成,但如果不重新培訓,它就無法在培訓後整合新信息。

2。適應性

抹布最適合概括。它使用檢索過程從不同的數據源中獲取信息。抹布不會改變模型的響應;它只是提供了指導模型的額外信息。 

微調可以自定義模型輸出,並改善與培訓數據集緊密相關的特殊域上的模型性能。它還改變了響應的風格,有時比抹布系統提供更多相關的答案。 

3。資源強度

rag是資源密集型的,因為它是在模型推斷期間執行的。與沒有抹布的簡單LLM相比,RAG需要更多的內存和計算。 

>微調是計算密集型的,但一次執行一次。在培訓過程中,它需要多個GPU和高內存,但是此後,與RAG系統相比,它非常適合資源友好。 

4。費用

抹布需要頂級的嵌入模型和LLM,以更好地生成響應。它還需要一個快速的向量數據庫。 API和操作成本可能很快上升。

> 在培訓過程中,微調只能花費您一次,但是在那之後,您將為模型推理付費,這比RAG便宜。   

如果考慮到一切,總體而言,總體而言,平均而言,微調成本比抹布高。 

5。實施複雜性

抹布系統可以由軟件工程師構建,需要中等技術專長。您需要了解LLM設計,矢量數據庫,嵌入,及時的工程師等,這確實需要時間,但在一個月內易於學習。 

微調模型需要高技術專業知識。從準備數據集到設置調諧參數,再到監視模型性能,需要在自然語言處理領域的多年經驗。 

將理論與實際示例進行測試

>讓我們通過為微調模型,抹布應用和混合方法提供相同的提示來測試我們的理論,然後評估結果。混合方法將將微調模型與RAG應用程序相結合。在此示例中,我們將通過擁抱面孔使用Ruslanmv/Ai-Medical-Medical-Chatbot數據集,該數據集包含患者與醫生之間有關各種健康狀況的對話。

>使用Llama 3

構建抹布應用程序

我們將使用Llama 3和Langchain生態系統構建RAG應用程序。 

>您還可以學習使用LlamainDex構建抹布應用程序,然後遵循該代碼,與llamaindex的檢索增強生成。

1。安裝所有必要的python軟件包。

%%capture
%pip install -U langchain langchainhub langchain_community langchain-huggingface faiss-gpu transformers accelerate
2。從Langchain和Transformers庫中加載必要的功能。

from langchain.document_loaders import HuggingFaceDatasetLoader
from langchain.text_splitter import RecursiveCharacterTextSplitter
from langchain.embeddings import HuggingFaceEmbeddings
from langchain.vectorstores import FAISS
from transformers import AutoTokenizer, AutoModelForCausalLM,pipeline
from langchain_huggingface import HuggingFacePipeline
from langchain.chains import RetrievalQA
3。為了訪問受限制的模型和數據集,建議您使用API​​鍵登錄到擁抱麵線。

from huggingface_hub import login
from kaggle_secrets import UserSecretsClient
user_secrets = UserSecretsClient()

hf_token = user_secrets.get_secret("HUGGINGFACE_TOKEN")
login(token = hf_token)
4。通過將數據集名稱和列名提供給HuggingFacedatAsetLoader加載數據集。 “醫生”列將是我們的主要文件,其餘的列將是元數據。 

5。將我們的數據集限制為第一個1000行。減少數據集將有助於我們減少矢量數據庫中的數據存儲時間。 

正如我們所看到的,“醫生”列是頁面內容,其餘的被視為元數據。 
# Specify the dataset name
dataset_name = "ruslanmv/ai-medical-chatbot"


# Create a loader instance using dataset columns
loader_doctor = HuggingFaceDatasetLoader(dataset_name,"Doctor")

# Load the data
doctor_data = loader_doctor.load()

# Select the first 1000 entries
doctor_data = doctor_data[:1000]

doctor_data[:2]

抹布與微調:一個全面的教程,帶有實際示例6。使用特定參數(例如啟用GPU加速度)加載嵌入模型。

7。通過提供示例文本來測試嵌入模型。

# Define the path to the embedding model
modelPath = "sentence-transformers/all-MiniLM-L12-v2"

# GPU acceleration
model_kwargs = {'device':'cuda'}

# Create a dictionary with encoding options
encode_kwargs = {'normalize_embeddings': False}

# Initialize an instance of HuggingFaceEmbeddings with the specified parameters
embeddings = HuggingFaceEmbeddings(
    model_name=modelPath,     
    model_kwargs=model_kwargs, 
    encode_kwargs=encode_kwargs
)
text = "Why are you a doctor?"
query_result = embeddings.embed_query(text)
query_result[:3]
8。將數據轉換為嵌入,並將其保存到矢量數據庫中。
[-0.059351932257413864, 0.08008933067321777, 0.040729623287916183]

9。將矢量數據庫保存在本地目錄中。

10。使用示例提示進行相似性搜索。

vector_db = FAISS.from_documents(doctor_data, embeddings)
vector_db.save_local("/kaggle/working/faiss_doctor_index")
question = "Hi Doctor, I have a headache, help me."
searchDocs = vector_db.similarity_search(question)
print(searchDocs[0].page_content)

抹布與微調:一個全面的教程,帶有實際示例11。將矢量數據庫實例轉換為回收器。這將有助於我們創建抹布鏈。

12。使用Llama 3 8B聊天型號加載令牌和模型。
retriever = vector_db.as_retriever()

13。使用它們來創建測試生成管道。

14。將管道轉換為Langchain LLM客戶端。

15。使用獵犬,用戶查詢,RAG提示和LLM創建一個問答鏈。
import torch
base_model = "/kaggle/input/llama-3/transformers/8b-chat-hf/1"

tokenizer = AutoTokenizer.from_pretrained(base_model)

model = AutoModelForCausalLM.from_pretrained(
        base_model,
        return_dict=True,
        low_cpu_mem_usage=True,
        torch_dtype=torch.float16,
        device_map="auto",
        trust_remote_code=True,
)

pipe = pipeline(
    "text-generation", 
    model=model, 
    tokenizer=tokenizer,
    max_new_tokens=120
)

llm = HuggingFacePipeline(pipeline=pipe)

16。通過向醫生提出問題來測試問答鏈。
from langchain import hub
from langchain_core.output_parsers import StrOutputParser
from langchain_core.runnables import RunnablePassthrough


rag_prompt = hub.pull("rlm/rag-prompt")




qa_chain = (
    {"context": retriever, "question": RunnablePassthrough()}
    | rag_prompt
    | llm
    | StrOutputParser()
)

>它與數據集非常相似,但是它不會拾取樣式。它已經理解了上下文,並用它以自己的風格編寫響應。 
question = "Hi Doctor, I have a headache, help me."
result = qa_chain.invoke(question)
print(result.split("Answer: ")[1])

抹布與微調:一個全面的教程,帶有實際示例

>讓我們再試一次問題。 

%%capture
%pip install -U langchain langchainhub langchain_community langchain-huggingface faiss-gpu transformers accelerate

這是一個非常直接的答案。也許我們需要微調模型,而不是為醫生和患者聊天機器人使用抹布方法。 

抹布與微調:一個全面的教程,帶有實際示例

如果您遇到運行代碼的困難,請諮詢Kaggle筆記本:使用Llama 3構建RAG應用程序。

通過遵循如何改善抹布性能來改善諸如塊,重讀和查詢轉換等技術的技術:5個與示例的示例教程。

>醫學數據的微調駱駝3

>我們不會在醫生和患者數據集上微調模型,因為我們已經在上一個教程中這樣做了:微調Llama 3並在本地使用它:逐步指南。我們要做的就是加載微調模型,並為其提供相同的問題來評估結果。在擁抱的臉和kaggle上可以使用微調模型。

>

如果您有興趣使用OpenAI API微調GPT-4型號,則可以參考易於遵循的DataCamp教程Fine-Tuning OpenAI的GPT-4:逐步指南。

抹布與微調:一個全面的教程,帶有實際示例來源:kingabzpro/llama-3-8b-chat-doctor

1。使用變壓器庫加載令牌和模型。

2。確保使用正確的參數將模型加載到Kaggle GPU T4 X2環境中。

3。將聊天模板應用於消息。
from langchain.document_loaders import HuggingFaceDatasetLoader
from langchain.text_splitter import RecursiveCharacterTextSplitter
from langchain.embeddings import HuggingFaceEmbeddings
from langchain.vectorstores import FAISS
from transformers import AutoTokenizer, AutoModelForCausalLM,pipeline
from langchain_huggingface import HuggingFacePipeline
from langchain.chains import RetrievalQA

4。使用模型和代幣器創建文本生成管道。

5。向管道對象提供提示並生成響應。

響應與數據集非常相似。樣式是相同的,但沒有給出直接答案,而是表明患者接受了進一步的測試。
from huggingface_hub import login
from kaggle_secrets import UserSecretsClient
user_secrets = UserSecretsClient()

hf_token = user_secrets.get_secret("HUGGINGFACE_TOKEN")
login(token = hf_token)

6。讓我們問第二個問題。 抹布與微調:一個全面的教程,帶有實際示例

樣式是相同的,並且反應是同理心和解釋性的。 

# Specify the dataset name
dataset_name = "ruslanmv/ai-medical-chatbot"


# Create a loader instance using dataset columns
loader_doctor = HuggingFaceDatasetLoader(dataset_name,"Doctor")

# Load the data
doctor_data = loader_doctor.load()

# Select the first 1000 entries
doctor_data = doctor_data[:1000]

doctor_data[:2]

如果您遇到運行代碼的困難,請諮詢Kaggle筆記本:微調Llama 3 HF推斷。 抹布與微調:一個全面的教程,帶有實際示例

雜交方法(抹布微調)

>現在,我們將為微調模型提供額外的上下文,以進一步調整響應並找到平衡。 

>而不是再次編寫所有代碼,我們將使用問答鏈直接潛入響應生成。如果您想查看我們如何將微調型號與抹布Q&A鏈組合在一起的完整代碼,請查看混合方法(抹布微調)Kaggle Notebook。 

為鏈條提供了與我們提出的抹布和微調模型相同的問題。

%%capture
%pip install -U langchain langchainhub langchain_community langchain-huggingface faiss-gpu transformers accelerate

答案非常準確,並且以醫生的方式產生了反應。 

抹布與微調:一個全面的教程,帶有實際示例

讓我們問第二個問題。

>
from langchain.document_loaders import HuggingFaceDatasetLoader
from langchain.text_splitter import RecursiveCharacterTextSplitter
from langchain.embeddings import HuggingFaceEmbeddings
from langchain.vectorstores import FAISS
from transformers import AutoTokenizer, AutoModelForCausalLM,pipeline
from langchain_huggingface import HuggingFacePipeline
from langchain.chains import RetrievalQA

這很奇怪。我們從未提供有關痤瘡是否充滿膿液的其他背景。也許混合模型不適用於某些查詢。 

抹布與微調:一個全面的教程,帶有實際示例

在醫生聊天機器人的情況下,微型模型在風格採用和準確性方面都擅長。但是,這可能在其他用例中有所不同,這就是為什麼進行大量測試以確定特定用例的最佳方法很重要的原因。

>

混合方法的官方術語是筏(檢索增強的微調)。通過閱讀什麼是筏子,了解有關它的更多信息?將抹布和微調結合起來,以使LLM適應專用域博客。

>如何在抹布與微調與筏

之間進行選擇

>這一切都取決於您的用例和可用資源。如果您是資源有限的初創公司,請嘗試使用打開的AI API和Langchain框架來構建抹布概念證明。為此,您將需要有限的資源,專業知識和數據集。 

您是一家中級公司,想微調以提高響應準確性並在雲上部署開源模型,則需要聘請數據科學家和機器學習操作工程師等專家。微調需要一流的GPU,大型內存,清潔的數據集和了解LLM的技術團隊。 

請參閱下表以獲取抹布,微調和筏解決方案的概述。

> rag 微調木筏優勢數據源管理,複雜性。 數據偏見,資源密集,高計算成本,大量內存需求,時間和專業知識密集。 實施中的複雜性,需要平衡檢索和微調過程。 高於及時工程。 高於抹布。需要高度技術專家。 這三個中最複雜的。 >動態>靜態>動態靜態很容易適應新的數據並不斷發展的事實。 > > 成本資源強度結論大型語言模型是當今AI發展的核心。公司正在尋找各種方法來改進和自定義這些模型,而無需花費數百萬美元的培訓。它們從參數優化和及時工程開始。他們要么選擇抹布或微調模型以獲得更好的響應並減少幻覺。雖然還有其他技術可以改善響應,但這些是最受歡迎的選擇。 在本教程中,我們通過理論和實際例子了解了抹布和微調之間的差異。我們還探索了混合模型,並比較了哪種方法可能最適合您。

>上下文理解,最小化幻覺,很容易適應新數據,成本效益。

特定於任務的專業知識,自定義,增強的精度,提高了魯棒性。

結合了抹布和微調的優勢,更深入的理解和背景。

缺點

>

實現複雜度

學習樣式

Adaptability

>將輸出自定義為特定的任務和域。

適應實時數據和特定任務。

中等

低。推理期間使用資源。 

中等。在微調過程中使用資源。 

>

要了解有關部署LLM和所涉及的各種技術的更多信息,請查看與LlamainDex的抹布有關的代碼,以及我們與Langchain部署LLM應用程序的課程。

以上是抹布與微調:一個全面的教程,帶有實際示例的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
無法使用chatgpt!解釋可以立即測試的原因和解決方案[最新2025]無法使用chatgpt!解釋可以立即測試的原因和解決方案[最新2025]May 14, 2025 am 05:04 AM

ChatGPT無法訪問?本文提供多種實用解決方案!許多用戶在日常使用ChatGPT時,可能會遇到無法訪問或響應緩慢等問題。本文將根據不同情況,逐步指導您解決這些問題。 ChatGPT無法訪問的原因及初步排查 首先,我們需要確定問題是出在OpenAI服務器端,還是用戶自身網絡或設備問題。 請按照以下步驟進行排查: 步驟1:檢查OpenAI官方狀態 訪問OpenAI Status頁面 (status.openai.com),查看ChatGPT服務是否正常運行。如果顯示紅色或黃色警報,則表示Open

計算ASI的風險始於人類的思想計算ASI的風險始於人類的思想May 14, 2025 am 05:02 AM

2025年5月10日,麻省理工學院物理學家Max Tegmark告訴《衛報》,AI實驗室應在釋放人工超級智能之前模仿Oppenheimer的三位一體測試演算。 “我的評估是'康普頓常數',這是一場比賽的可能性

易於理解的解釋如何編寫和撰寫歌詞和推薦工具易於理解的解釋如何編寫和撰寫歌詞和推薦工具May 14, 2025 am 05:01 AM

AI音樂創作技術日新月異,本文將以ChatGPT等AI模型為例,詳細講解如何利用AI輔助音樂創作,並輔以實際案例進行說明。我們將分別介紹如何通過SunoAI、Hugging Face上的AI jukebox以及Python的Music21庫進行音樂創作。 通過這些技術,每個人都能輕鬆創作原創音樂。但需注意,AI生成內容的版權問題不容忽視,使用時務必謹慎。 讓我們一起探索AI在音樂領域的無限可能! OpenAI最新AI代理“OpenAI Deep Research”介紹: [ChatGPT]Ope

什麼是chatgpt-4?對您可以做什麼,定價以及與GPT-3.5的差異的詳盡解釋!什麼是chatgpt-4?對您可以做什麼,定價以及與GPT-3.5的差異的詳盡解釋!May 14, 2025 am 05:00 AM

ChatGPT-4的出现,极大地拓展了AI应用的可能性。相较于GPT-3.5,ChatGPT-4有了显著提升,它具备强大的语境理解能力,还能识别和生成图像,堪称万能的AI助手。在提高商业效率、辅助创作等诸多领域,它都展现出巨大的潜力。然而,与此同时,我们也必须注意其使用上的注意事项。 本文将详细解读ChatGPT-4的特性,并介绍针对不同场景的有效使用方法。文中包含充分利用最新AI技术的技巧,敬请参考。 OpenAI发布的最新AI代理,“OpenAI Deep Research”详情请点击下方链

解釋如何使用chatgpt應用程序!日本支持和語音對話功能解釋如何使用chatgpt應用程序!日本支持和語音對話功能May 14, 2025 am 04:59 AM

CHATGPT應用程序:與AI助手釋放您的創造力!初學者指南 ChatGpt應用程序是一位創新的AI助手,可處理各種任務,包括寫作,翻譯和答案。它是一種具有無限可能性的工具,可用於創意活動和信息收集。 在本文中,我們將以一種易於理解的方式解釋初學者,從如何安裝chatgpt智能手機應用程序到語音輸入功能和插件等應用程序所獨有的功能,以及在使用該應用時要牢記的要點。我們還將仔細研究插件限制和設備對設備配置同步

如何使用中文版Chatgpt?註冊程序和費用的說明如何使用中文版Chatgpt?註冊程序和費用的說明May 14, 2025 am 04:56 AM

ChatGPT中文版:解鎖中文AI對話新體驗 ChatGPT風靡全球,您知道它也提供中文版本嗎?這款強大的AI工具不僅支持日常對話,還能處理專業內容,並兼容簡體中文和繁體中文。無論是中國地區的使用者,還是正在學習中文的朋友,都能從中受益。 本文將詳細介紹ChatGPT中文版的使用方法,包括賬戶設置、中文提示詞輸入、過濾器的使用、以及不同套餐的選擇,並分析潛在風險及應對策略。此外,我們還將對比ChatGPT中文版和其他中文AI工具,幫助您更好地了解其優勢和應用場景。 OpenAI最新發布的AI智能

5 AI代理神話,您需要停止相信5 AI代理神話,您需要停止相信May 14, 2025 am 04:54 AM

這些可以將其視為生成AI領域的下一個飛躍,這為我們提供了Chatgpt和其他大型語言模型聊天機器人。他們可以代表我們採取行動,而不是簡單地回答問題或產生信息

易於理解使用Chatgpt創建和管理多個帳戶的非法性的解釋易於理解使用Chatgpt創建和管理多個帳戶的非法性的解釋May 14, 2025 am 04:50 AM

使用chatgpt有效的多個帳戶管理技術|關於如何使用商業和私人生活的詳盡解釋! Chatgpt在各種情況下都使用,但是有些人可能擔心管理多個帳戶。本文將詳細解釋如何為ChatGpt創建多個帳戶,使用時該怎麼做以及如何安全有效地操作它。我們還介紹了重要的一點,例如業務和私人使用差異,並遵守OpenAI的使用條款,並提供指南,以幫助您安全地利用多個帳戶。 Openai

See all articles

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

Video Face Swap

Video Face Swap

使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱門文章

熱工具

Dreamweaver Mac版

Dreamweaver Mac版

視覺化網頁開發工具

SublimeText3 英文版

SublimeText3 英文版

推薦:為Win版本,支援程式碼提示!

ZendStudio 13.5.1 Mac

ZendStudio 13.5.1 Mac

強大的PHP整合開發環境

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發工具