-
使用LlamaIndex載入文檔
Continue Reading…: 使用LlamaIndex載入文檔YouTube 文件載入器 將 YouTube 影片的文字記錄轉換為文件格式 會得到如下格式的json資料 載入PDF文件 使用下面的程式碼可以讀取本地端的pdf文件,請確保該檔案存在 會產生如下的json檔案 載入Notion筆記本 建立對話機器人 對話測試 LangChain是一个基于大语言模型的应用程序开发框架,旨在简化创建大模型应用程序的过程。它提供了一套完整的工具、组件和接口,使开发者能够轻松地利用大语…. 可得到以上回應
-
LlamaIndex的基礎元件
Continue Reading…: LlamaIndex的基礎元件基礎元件 LlamaIndex 的基礎元件包括: 載入資料 使用SimpleDirectoryReader來載入本地端資料 將資料分割成節點 節點是基本的資料結構,用於保存輸入。我們將使用以下程式碼將上述輸入分割成多個節點。 產生索引 現在我們已經創建了節點,可以在其上建立索引。我們將使用 VectorStoreIndex,它會從節點中的所有文本創建嵌入,並將其存儲在向量數據庫中。 建立檢索器 我們將使用 VectorIndexRetriever,它會根據相似度檢索出前 k 個匹配的文件。在這個例子中,我們將 k 設為 2。 建立查詢引擎 現在我們可以在檢索器之上構建一個查詢引擎來開始進行查詢。 詢問問題 現在我們可以在檢索器上建立一個查詢引擎來開始進行查詢。 Jupyter Notebook完整範例下載 https://github.com/SamurAIGPT/LlamaIndex-course/blob/main/fundamentals/Fundamentals.ipynb
-
LlamaIndex介紹
Continue Reading…: LlamaIndex介紹主要功能 LlamaIndex 專注於將非結構化數據(如文本文件、PDF、網頁內容等)轉換為可以用於查詢和分析的結構化索引。它為用戶提供了一種簡單的方法來構建和查詢這些索引,從而更好地利用大型語言模型進行數據處理和檢索。 LlamaIndex 提供了以下功能來幫忙構建上下文增強 LLM 應用程式: 使用教學(使用OpenAI的功能) 官方教學: https://docs.llamaindex.ai/en/latest/getting_started/starter_example/ LlamaIndex預設會使用OpenAI的Indexing功能去做文字的索引,以下為一個官方的範例,使用之前需要先安裝llama-index套件 接著下載數據並且放到data資料夾內,然後設定環境變數 設定環境變數的方法為到專案內新增.env檔案,並在其中設定OPENAI_API_KEY(可以到這邊申請) 接著新增一個檔案名為starter.py,內容如下: 此時文件結構應該像下面這樣子 執行之後,可以看到程式載入了data內的資料,呼叫https://api.openai.com/v1/embeddings來做詞嵌入的動作 以下是訊息中的一些重要部分: 上面這些訊息則代表已經生成了storage資料夾,儲存詞嵌入的結果 使用索引的資料詢問問題 下面這樣簡短的程式碼可自動載入”./storage”內的嵌入檔案,並且將嵌入的檔案和詢問的問題傳送給OpenAI API的https://api.openai.com/v1/chat/completions文字生成機器人 則可看到得到的回應如下: The author worked on writing short stories and programming, starting with the IBM 1401 in 9th grade, using…
-
機器學習的效能衡量指標
Continue Reading…: 機器學習的效能衡量指標混淆矩陣 混淆矩陣(Confusion Matrix)是一種評估分類模型性能的工具,特別適用於監督學習中的分類問題。它能夠幫助你了解模型在不同類別上的預測結果,並提供更多信息來評估模型的準確性。 混淆矩陣是一個方陣,其中每一行代表實際的類別,每一列代表模型預測的類別。以下是一個二元分類問題的混淆矩陣範例: 預測為正類 (Positive) 預測為負類 (Negative) 實際為正類 (Positive) 真正類 (TP) 偽負類 (FN) 實際為負類 (Negative) 偽正類 (FP) 真負類 (TN) 準確率(Accuracy) 預測正確的樣本數量與總樣本數量之比 Accuracy= (tp+tn)/(tp+fp+fn+tn) 精確率(Precision) 指的是在所有被模型預測為正類的樣本中,實際上是正類的比例。換句話說,它衡量了模型正確預測正例的能力,並且避免錯誤地將負例分類為正例 Precision= tp/(tp+fp) 召回率(Recall) 實際上被正確預測為正例的樣本數量除以所有實際正類樣本的數量 Recall = tp/(tp+fn) F1-score 是一個綜合了精確度(Precision)和召回率(Recall)的指標,使用精確度和召回率的值計算 F1-score Precision-Recall 曲線 用於評估二元分類器性能的一種圖表。它描述了在不同閾值下模型的精確度(Precision)和召回率(Recall)之間的折衷關係。 在…
-
LangChain的基礎鏈介紹
Continue Reading…: LangChain的基礎鏈介紹甚麼是LangChain LangChain是根據大型語言模型(LLM) 打造應用程式的框架。LangChain使用基礎鏈來建立由 LLM(大型語言模型)支援的應用程式。這些基本鍊是模組化構建塊,用於在應用程式中執行特定任務。 LangChain 是用於開發由語言模型驅動的應用程式的框架。 教學資源 鏈結構介紹 鏈( Chains )是一個非常通用的概念,它指的是將一系列模組化組件(或其他鏈)以特定方式組合起來,以實現共同的用例。 LLMChain(單鏈) 類別說明: https://api.python.langchain.com/en/latest/chains/langchain.chains.llm.LLMChain.html 最常用的鏈類型,它結合了PromptTemplate(input)、Model(LLM)和Guardrails(output)來接收用戶輸入,進行相應的格式化,將其傳遞給模型並獲取回應,然後驗證和修正(如果需要)模型的輸出。 SequentialChain(循序鏈) 類別說明: https://api.python.langchain.com/en/latest/chains/langchain.chains.sequential.SequentialChain.html 同一次的詢問,至少兩次的與LLM交互,把複雜的問題拆解成小的問題,然後再輸出回應 這邊是一篇說明文章:https://blog.csdn.net/wangjiansui/article/details/137509565 總之就是讓輸入到輸出之間串聯多個LLM系統並依序執行 以下是如何使用 SequentialChain 的一些範例: TransformChain(轉換鏈) 類別說明: https://api.python.langchain.com/en/latest/chains/langchain.chains.transform.TransformChain.html 這些轉換可以是簡單的文字操作(例如,文字清理)或更複雜的模型。 以下是 TransformChain 工作原理的詳細說明: 以下是如何使用 TransformChain 的一些範例:
-
QLoRA – Efficient Finetuning of Quantized LLMs
Continue Reading…: QLoRA – Efficient Finetuning of Quantized LLMsQLoRA 擴展了 LoRA,透過量化原始網路的權重值來提高效率,從高解析度資料類型(如 Float32)到較低解析度資料類型(如 int4)。這會減少記憶體需求並加快計算速度。 什麼是QLoRA QLORA(Quantized LoRA)方法是一種用於大型語言模型(LLMs)的微調的新方法。傳統上,微調大型模型需要龐大的計算資源,而QLORA則提出了一種可以在GPU上進行低成本微調的方法。QLORA的關鍵創新在於使用了4位量化技術,並引入了可訓練的低秩適配器權重,從而大幅降低了微調過程中所需的記憶體,並且在不影響模型性能的情況下實現了相當於16位完全微調基準的預測性能。 QLoRA 技術所做的三個面向改進 由上圖可知,QLoRA 利用了nVidia 統一記憶體功能,當GPU 記憶體不足時,該功能允許GPU->CPU 無縫頁面傳輸,從而管理GPU 中突然出現的記憶體峰值,並協助解決記憶體溢出/超限問題。 利用QLoRA所做的研究 由於 QLORA 的高效性,可以進行深入的指令微調和聊天機器人效能研究,所涉及的模型規模是常規微調因記憶體開銷而無法企及的。 因此,提出論文的團隊針對多個指令微調資料集、模型架構以及參數規模介於 80M 到 65B 的模型訓練了超過 1000 個模型。 除了證明 QLORA 能恢復 16 位元精度效能(§4)以及訓練出最先進的聊天機器人 Guanaco(§5)之外,還分析了訓練模型的趨勢。 首先,他們發現資料品質比資料集大小重要得多,例如,一個包含9k 個樣本的資料集(OASST1) 在聊天機器人效能方面優於一個包含45 萬個樣本的資料集(子集化的FLAN v2 ),即使兩者都旨在支持遵循指令泛化。 其次,他們展示了強大的大規模多任務語言理解(MMLU)…
-
LoRA (Low-Rank Adaptation)
Continue Reading…: LoRA (Low-Rank Adaptation)LoRA(Low-Rank Adaptation)是什麼 LoRA是一種有效的參數微調技術,可幫助改善大型語言模型在特定任務上的效能表現,並且具有較低的運算和儲存成本。它是一種用於在大型語言模型(LLM)上進行參數微調的技術。 它旨在透過降低模型參數的秩(rank)來減少模型的複雜度,從而提高模型的泛化能力和適應性。 在傳統的參數微調過程中,常常會遇到過擬合的問題,特別是當訓練資料較少或訓練資料與目標任務不符時。 LoRA透過引入一個低秩的參數矩陣,將原始的高維參數矩陣分解成兩個低秩矩陣的乘積,從而降低模型的複雜度。 這種降維的方式可以有效地減少模型的參數量,減緩過度擬合的情況,並提高模型的泛化能力。 LoRA的主要優點 LoRA流程說明 運作原理 在LoRA中,一組新參數同時加入了網路WA和中WB。這些網路利用低秩權重向量,其向量的維度表示為dxr和rxd。在這裡,「d」代表原始凍結網路參數向量的維度,而「r」表示所選的低秩或更低維度。值得注意的是,「r」的值越小,模型訓練過程就越加速和簡化。確定適當的「r」值是LoRA中的關鍵決策。選擇較低的值會導致更快且更具成本效益的模型訓練,但可能不會產生最佳結果。相反,選擇較高的「r」值會增加訓練時間和成本,但會增強模型處理更複雜任務的能力。 LoRA的運作方式是,首先需要一個預先訓練的LLM,並凍結其大部分參數。然後,將這些凍結的預訓練模型權重與可訓練的秩分解矩陣一起注入到變壓器的每一層中。這樣做有助於精細化模型,特別是在低資源硬體上調整模型。 從上表可以看出,LoRA 方法的結果與經典的微調方法相當,可以用更少的時間和資源獲得或多或少相同的結果,並且有更快的執行時間和更短的訓練時間,真是太棒了! 結論 更多資訊請見 LoRA: Low-Rank Adaptation of Large Language Models:
-
Retrieval-Augmented LLMs
Continue Reading…: Retrieval-Augmented LLMs檢索增強生成(RAG)的工作流程 從使用者查詢開始,透過向量資料庫檢索,到填入提示,最終形成回答的整個過程。 RETA-LLM框架可以看作是實現RAG目標的一種具體實現方式,它提供了一套模組化的工具和方法來將外部知識整合到語言模型中,以提升其產生答案的能力。 RETA-LLM Framework 研究論文: https://arxiv.org/pdf/2306.05212v1 過去通用的LLM增強工具包(如LangChain)與RETA-LLM有所不同,RETA-LLM專注於檢索增強LLMs,並提供更多的插件模組。 檢索增強LLMs使用兩個模組的檢索和生成策略: 除了這兩個基本模組外,RETA-LLM還提供了三個可選模組: 這些可選模組可以使IR系統和LLMs之間的交互更加有效和順暢。RETA-LLM中LLMs和IR系統之間的解綁更加徹底,這使得搜索引擎和LLMs的定制更加方便。 RETA-LLM的框架圖 RETA-LLM的工作流程如下: 請注意,LLMs的所有輸入都包含在指示或提示中。 如圖1所示,在RETA-LLM中完全解開了IR系統和LLMs之間的連結。 我們RETA-LLM中的這種分離設計使用戶可以自訂自己的個人搜尋引擎和LLMs。 知識檢索的過程 RAG的挑戰
-
提示工程框架的概念
Continue Reading…: 提示工程框架的概念明確具體的提問 以下為一個範例 In-Context Learning和Chain-of-Thought Tree-of-Thoughts思維樹 思考樹(ToT)是一種透過將複雜問題分解為更易於解決的小問題,為LLM推理提供了更結構化的提示框架。 與在鏈中推理的CoT不同,ToT以樹的形式組織其解決問題的策略。每個節點都被稱為“思維”,是一個連貫的語言序列,是通往最終答案的一步。 透過將問題劃分為離散的「思想」單元——從填字遊戲中的一系列簡短單字到數學方程式的一個組成部分——ToT確保問題的每個階段都得到系統的解決。 在「oracle模式」下,ToT的表現比CoT還要好
-
準備微調用的資料集
Continue Reading…: 準備微調用的資料集LLM的訓練過程 以下是LLM訓練過程的圖 NLP 數據集可用於演示各種 NLP 任務,例如: NLP 數據集可用於為 NLP 模型提供輸入和輸出。 整理 NLP 數據集的步驟 簡單的範例程式碼 用於整理 NLP 數據集的工具和資源
Search
About Me
17年資歷女工程師,專精於動畫、影像辨識以及即時串流程式開發。經常組織活動,邀請優秀的女性分享她們的技術專長,並在眾多場合分享自己的技術知識,也活躍於非營利組織,辦理活動來支持特殊兒及其家庭。期待用技術改變世界。
如果你認同我或想支持我的努力,歡迎請我喝一杯咖啡!讓我更有動力分享知識!