課程地址:GitHub - datawhalechina/llm-universe: 本項目是一個面向小白開發者的大模型應用開發教程,在線閱讀地址:https://datawhalechina.github.io/llm-universe/
難點:配置conda環境變量
我用的vscode + github方法
目錄
重要名詞解釋:
涌現能力(emergent abilities)
檢索增強生成
RAG 的工作流程
RAG VS Finetune
大模型開發的一般流程?
?搭建 LLM 項目的流程簡析(以知識庫助手為例)
項目規劃與需求分析
配置github
停止代碼空間
易錯點:
1. 環境變量設置錯誤
2.?沒有初始化 conda shell 支持?
3.?雖然運行了 conda init,但 VS Code 的終端還是沒有識別到 conda 激活環境的配置,這通常是因為 VS Code 終端未加載更新后的配置文件
4.??conda 的初始化命令沒有正確添加到 PowerShell 的配置文件中。雖然你執行了 conda init,但 VSCode 的 PowerShell 沒有正確讀取它。
5.?在配置 PowerShell 文件時,它遇到了需要管理員權限的問題(提示 "needs sudo")
?
重要名詞解釋:
涌現能力(emergent abilities)
區分大語言模型(LLM)與以前的預訓練語言模型(PLM)最顯著的特征之一是它們的?涌現能力
。涌現能力是一種令人驚訝的能力,它在小型模型中不明顯,但在大型模型中特別突出。類似物理學中的相變現象,涌現能力就像是模型性能隨著規模增大而迅速提升,超過了隨機水平,也就是我們常說的?量變引起質變。
涌現能力可以與某些復雜任務有關,但我們更關注的是其通用能力。接下來,我們簡要介紹三個 LLM 典型的涌現能力:
-
上下文學習:上下文學習能力是由 GPT-3 首次引入的。這種能力允許語言模型在提供自然語言指令或多個任務示例的情況下,通過理解上下文并生成相應輸出的方式來執行任務,而無需額外的訓練或參數更新。
-
指令遵循:通過使用自然語言描述的多任務數據進行微調,也就是所謂的?
指令微調
。LLM 被證明在使用指令形式化描述的未見過的任務上表現良好。這意味著 LLM 能夠根據任務指令執行任務,而無需事先見過具體示例,展示了其強大的泛化能力。 -
逐步推理:小型語言模型通常難以解決涉及多個推理步驟的復雜任務,例如數學問題。然而,LLM 通過采用?
思維鏈(CoT, Chain of Thought)
?推理策略,利用包含中間推理步驟的提示機制來解決這些任務,從而得出最終答案。據推測,這種能力可能是通過對代碼的訓練獲得的。
這些涌現能力讓 LLM 在處理各種任務時表現出色,使它們成為了解決復雜問題和應用于多領域的強大工具。
檢索增強生成
檢索增強生成(RAG, Retrieval-Augmented Generation)。該架構巧妙地整合了從龐大知識庫中檢索到的相關信息,并以此為基礎,指導大型語言模型生成更為精準的答案,從而顯著提升了回答的準確性與深度。
RAG 的工作流程
RAG VS Finetune
大模型開發的一般流程?
?搭建 LLM 項目的流程簡析(以知識庫助手為例)
以下我們將結合本實踐項目與上文的整體流程介紹,簡要分析知識庫助手項目開發流程:
項目規劃與需求分析
-
項目目標:基于個人知識庫的問答助手
-
核心功能
- 將爬取并總結的 MarkDown 文件及用戶上傳文檔向量化,并創建知識庫;
- 選擇知識庫,檢索用戶提問的知識片段;
- 提供知識片段與提問,獲取大模型回答;
- 流式回復;
- 歷史對話記錄
-
確定技術架構和工具
- 框架:LangChain
- Embedding 模型:GPT、智譜、M3E
- 數據庫:Chroma
- 大模型:GPT、訊飛星火、文心一言、GLM 等
- 前端:Gradio 和 Streamlit
-
數據準備與向量知識庫構建
本項目實現原理如下圖所示(圖片來源):加載本地文檔 -> 讀取文本 -> 文本分割 -> 文本向量化 -> question 向量化 -> 在文本向量中匹配出與問句向量最相似的 top k 個 -> 匹配出的文本作為上下文和問題一起添加到 Prompt 中 -> 提交給 LLM 生成回答。
?
-
收集和整理用戶提供的文檔
用戶常用文檔格式有 PDF、TXT、MD 等,首先,我們可以使用 LangChain 的文檔加載器模塊方便地加載用戶提供的文檔,或者使用一些成熟的 Python 包進行讀取。
由于目前大模型使用 token 的限制,我們需要對讀取的文本進行切分,將較長的文本切分為較小的文本,這時一段文本就是一個單位的知識。
-
將文檔詞向量化
使用
文本嵌入(Embeddings)技術
對分割后的文檔進行向量化,使語義相似的文本片段具有接近的向量表示。然后,存入向量數據庫,完成?索引(index)
?的創建。利用向量數據庫對各文檔片段進行索引,可以實現快速檢索。
-
將向量化后的文檔導入 Chroma 知識庫,建立知識庫索引
Langchain 集成了超過 30 個不同的向量數據庫。Chroma 數據庫輕量級且數據存儲在內存中,這使得它非常容易啟動和開始使用。
將用戶知識庫內容經過 Embedding 存入向量數據庫,然后用戶每一次提問也會經過 Embedding,利用向量相關性算法(例如余弦算法)找到最匹配的幾個知識庫片段,將這些知識庫片段作為上下文,與用戶問題一起作為 Prompt 提交給 LLM 回答。
-
大模型集成與 API 連接
- 集成 GPT、星火、文心、GLM 等大模型,配置 API 連接。
- 編寫代碼,實現與大模型 API 的交互,以便獲取問題回答。
-
核心功能實現
- 構建 Prompt Engineering,實現大模型回答功能,根據用戶提問和知識庫內容生成回答。
- 實現流式回復,允許用戶進行多輪對話。
- 添加歷史對話記錄功能,保存用戶與助手的交互歷史。
-
核心功能迭代優化
- 進行驗證評估,收集 Bad Case。
- 根據 Bad Case 迭代優化核心功能實現。
-
前端與用戶交互界面開發
- 使用 Gradio 和 Streamlit 搭建前端界面。
- 實現用戶上傳文檔、創建知識庫的功能。
- 設計用戶界面,包括問題輸入、知識庫選擇、歷史記錄展示等。
-
部署測試與上線
- 部署問答助手到服務器或云平臺,確保可在互聯網上訪問。
- 進行生產環境測試,確保系統穩定。
- 上線并向用戶發布。
-
維護與持續改進
- 監測系統性能和用戶反饋,及時處理問題。
- 定期更新知識庫,添加新的文檔和信息。
- 收集用戶需求,進行系統改進和功能擴展。
整個流程將確保項目從規劃、開發、測試到上線和維護都能夠順利進行,為用戶提供高質量的基于個人知識庫的問答助手。
配置github
- 打開網址鏈接:https://github.com/features/codespaces
- 登錄你的 GitHub 賬戶
- 點擊圖示?Your repositories
4. 進入自己的存儲庫列表后,點擊圖示?New,新建一個存儲庫?
5. 這里根據自己需要設置即可,為方便和安全起見?Add a README file?建議勾上,同時選擇?Private(因為課程中用到 API key,注意保護隱私),設置完成后點擊?Create repository??
6. 創建好存儲庫后,點擊?code?選擇?Codespaces, 點擊圖示?Create codespace on main?
7.?等待一段時間后會出現如下界面,接下來操作與 VSCode 相同,可根據需要安裝插件調整設置
?
?8. 本地 VSCode 連接 Codespace
- 打開 VSCode,搜索 codespace 安裝插件?
2.?在 VSCode 的活動欄中,單擊遠程資源管理器圖標
3.?登錄 GitHub,根據提示登錄即可
4.?可以看到這里有我們剛才創建的 codespace,單擊紅框連接圖標
5.?成功連接到了 codespace
網頁關閉后,找到剛才新建的存儲庫,點擊紅框框選內容即可重新進入 codespace
免費額度 找到 GitHub 的賬戶設置后,可以在Plans and usage中看到剩余的免費額度
?
停止代碼空間
停止和啟動 codespace_GitHub中文網可停止和啟動 codespace 以保存資源和暫停工作。https://github.net.cn/zh/codespaces/developing-in-a-codespace/stopping-and-starting-a-codespace導航到?Sign in to GitHub · GitHub?上的“你的 Codespaces”頁面。
- 單擊要停止的 codespace 右側的省略號 (...)。
- 單擊“停止 codespace”。
易錯點:
1. 環境變量設置錯誤
當出現如下提示時:
PS C:\Users\app> conda create -n llm-universe python=3.10 conda : 無法將“conda”項識別為 cmdlet、函數、腳本文件或可運行程序的名稱。請檢查名稱的拼寫,如果包括路徑,請確保路徑正確,然后再試一次。 所在位置 行:1 字符: 1 + conda create -n llm-universe python=3.10 + ~~~~~ + CategoryInfo : ObjectNotFound: (conda:String) [], CommandNotFoundException + FullyQualifiedErrorId : CommandNotFoundException PS C:\Users\app>
CONDA PATH
(系統變量)
-
當前值:
D:\Users\app\miniconda3\condabin\conda.bat
-
說明: 這個路徑指向
conda.bat
文件,用于初始化 Conda 環境。 -
建議:
-
推薦設置為 PATH 變量(用戶或系統)中的一部分,而不是單獨的新變量。
-
最好把
D:\Users\app\miniconda3
和D:\Users\app\miniconda3\Scripts
加入系統或用戶的Path
環境變量中,而不是用CONDA PATH
。
-
下一步建議:
-
打開一個新的命令提示符窗口(CMD 或 PowerShell)。
-
輸入:
conda --version
?來確認 Conda 是否可用并輸出版本號。
從截圖的命令行輸出來看,一切都很順利:
-
? 成功執行了
conda create -n llm-universe python=3.10
。 -
? Conda 正在準備安裝所需的 Python 3.10 及其依賴項。
-
? 環境路徑是:
D:\Users\app\miniconda3\envs\llm-universe
。 -
? 正常提示是否繼續安裝(
Proceed ([y]/n)?
)
輸入如下:
y
然后回車,Conda 就會開始安裝這些包并創建環境。
完成后可以通過以下命令激活該環境:
conda activate llm-universe
?顯示如下即成功。
當在 VS Code 中運行 conda create -n llm-universe python=3.10
時看到這個提示:
WARNING: A conda environment already exists at 'D:\Users\app\miniconda3\envs\llm-universe' Remove existing environment (y/[n])?
說明這個環境 已經存在,
使用已有環境
-
按
n
回車(不要刪除環境); -
然后激活環境并在其中安裝你需要的包:
conda activate llm-universe
再執行:
conda install pytorch torchvision torchaudio pytorch-cuda=11.8 -c pytorch -c nvidia
pip install transformers datasets jupyterlab numpy pandas matplotlib scikit-learn tqdm
2.?沒有初始化 conda shell 支持?
?
解決方法:
在 VS Code 終端中運行以下命令(只需運行一次):
conda init
然后 關閉 VS Code 終端,再重新打開一個新的終端,或者重啟 VS Code。
再嘗試激活:
conda activate llm-universe
成功后,提示會變成類似這樣:
scss(llm-universe) C:\Users\app>
這時你就在虛擬環境中了,可以開始安裝包。
3.?雖然運行了 conda init
,但 VS Code 的終端還是沒有識別到 conda
激活環境的配置,這通常是因為 VS Code 終端未加載更新后的配置文件
?
解決方法(推薦 PowerShell 用戶):
請按以下步驟操作:
🛠 方案:打開「Anaconda Prompt」或「PowerShell(非 VS Code 內置終端)」
-
在 Windows 開始菜單中搜索 Anaconda Prompt 或者 PowerShell。
-
打開后輸入:
conda activate llm-universe
-
如果可以正常激活,說明 Conda 初始化成功,VS Code 的終端沒正確加載而已。
4.??conda
的初始化命令沒有正確添加到 PowerShell 的配置文件中。雖然你執行了 conda init
,但 VSCode 的 PowerShell 沒有正確讀取它。
?PS C:\Users\app> conda activate llm-universe >> CondaError: Run 'conda init' before 'conda activate' PS C:\Users\app>
解決方案:手動修復 PowerShell 初始化
請按以下步驟操作:
步驟 1:重新運行初始化命令(確保是為 PowerShell)
bashconda init powershell
這會將 Conda 的初始化代碼寫入 PowerShell 的配置文件(如 $PROFILE
)。
步驟 2:關閉并重新打開 VSCode 的終端
-
在 VSCode 中:
-
關閉當前終端(
垃圾桶圖標
) -
再點
+
新建一個終端窗口
-
或者你也可以 重啟 VSCode。
步驟 3:再次激活環境
bashconda activate llm-universe
這時應該能看到 (llm-universe)
出現在提示符前,說明環境成功激活。
附加檢查(可選)
如果上面不生效,確保 PowerShell 腳本執行權限是開啟的:
方法:
在 VSCode 終端中運行:
powershellSet-ExecutionPolicy -Scope CurrentUser -ExecutionPolicy RemoteSigned
選擇 Y
并回車。
嘗試上述操作后再運行 conda activate llm-universe
看是否正常了
5.?在配置 PowerShell 文件時,它遇到了需要管理員權限的問題(提示 "needs sudo")
解決辦法:手動創建缺失的文件夾
請按以下步驟操作:
-
打開文件資源管理器。
-
進入路徑:
C:\Users\app\Documents\
-
在
Documents
目錄下,新建一個文件夾,命名為:
WindowsPowerShell
然后在該文件夾下(C:\Users\app\Documents\WindowsPowerShell\
)新建一個文件:
-
文件名:
profile.ps1
-
文件類型:PowerShell 腳本文件
-
內容如下:
powershell# >>> conda initialize >>> & 'D:\Users\app\miniconda3\shell\condabin\conda-hook.ps1' ; conda activate base # <<< conda initialize <<<
請根據你的 Miniconda 安裝路徑(看起來是 D:\Users\app\miniconda3
)保持路徑一致。
接下來
-
保存該
profile.ps1
文件。 -
重新打開 VSCode 或 PowerShell 終端。
-
運行:
powershellconda activate llm-universe
如果一切正常,conda
應該就可以被正常激活了?
?