Datawhale 5月llm-universe 第1次筆記

課程地址: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 典型的涌現能力:

  1. 上下文學習:上下文學習能力是由 GPT-3 首次引入的。這種能力允許語言模型在提供自然語言指令或多個任務示例的情況下,通過理解上下文并生成相應輸出的方式來執行任務,而無需額外的訓練或參數更新。

  2. 指令遵循:通過使用自然語言描述的多任務數據進行微調,也就是所謂的?指令微調。LLM 被證明在使用指令形式化描述的未見過的任務上表現良好。這意味著 LLM 能夠根據任務指令執行任務,而無需事先見過具體示例,展示了其強大的泛化能力。

  3. 逐步推理:小型語言模型通常難以解決涉及多個推理步驟的復雜任務,例如數學問題。然而,LLM 通過采用?思維鏈(CoT, Chain of Thought)?推理策略,利用包含中間推理步驟的提示機制來解決這些任務,從而得出最終答案。據推測,這種能力可能是通過對代碼的訓練獲得的。

這些涌現能力讓 LLM 在處理各種任務時表現出色,使它們成為了解決復雜問題和應用于多領域的強大工具。

檢索增強生成

檢索增強生成(RAG, Retrieval-Augmented Generation)。該架構巧妙地整合了從龐大知識庫中檢索到的相關信息,并以此為基礎,指導大型語言模型生成更為精準的答案,從而顯著提升了回答的準確性與深度。

RAG 的工作流程

RAG VS Finetune

大模型開發的一般流程?

?搭建 LLM 項目的流程簡析(以知識庫助手為例)

以下我們將結合本實踐項目與上文的整體流程介紹,簡要分析知識庫助手項目開發流程:

項目規劃與需求分析

  1. 項目目標:基于個人知識庫的問答助手

  2. 核心功能

    1. 將爬取并總結的 MarkDown 文件及用戶上傳文檔向量化,并創建知識庫;
    2. 選擇知識庫,檢索用戶提問的知識片段;
    3. 提供知識片段與提問,獲取大模型回答;
    4. 流式回復;
    5. 歷史對話記錄
  3. 確定技術架構和工具

    1. 框架:LangChain
    2. Embedding 模型:GPT、智譜、M3E
    3. 數據庫:Chroma
    4. 大模型:GPT、訊飛星火、文心一言、GLM 等
    5. 前端:Gradio 和 Streamlit
  4. 數據準備與向量知識庫構建

本項目實現原理如下圖所示(圖片來源):加載本地文檔 -> 讀取文本 -> 文本分割 -> 文本向量化 -> question 向量化 -> 在文本向量中匹配出與問句向量最相似的 top k 個 -> 匹配出的文本作為上下文和問題一起添加到 Prompt 中 -> 提交給 LLM 生成回答。

?

  1. 收集和整理用戶提供的文檔

    用戶常用文檔格式有 PDF、TXT、MD 等,首先,我們可以使用 LangChain 的文檔加載器模塊方便地加載用戶提供的文檔,或者使用一些成熟的 Python 包進行讀取。

    由于目前大模型使用 token 的限制,我們需要對讀取的文本進行切分,將較長的文本切分為較小的文本,這時一段文本就是一個單位的知識。

  2. 將文檔詞向量化

    使用文本嵌入(Embeddings)技術對分割后的文檔進行向量化,使語義相似的文本片段具有接近的向量表示。然后,存入向量數據庫,完成?索引(index)?的創建。

    利用向量數據庫對各文檔片段進行索引,可以實現快速檢索。

  3. 將向量化后的文檔導入 Chroma 知識庫,建立知識庫索引

    Langchain 集成了超過 30 個不同的向量數據庫。Chroma 數據庫輕量級且數據存儲在內存中,這使得它非常容易啟動和開始使用。

    將用戶知識庫內容經過 Embedding 存入向量數據庫,然后用戶每一次提問也會經過 Embedding,利用向量相關性算法(例如余弦算法)找到最匹配的幾個知識庫片段,將這些知識庫片段作為上下文,與用戶問題一起作為 Prompt 提交給 LLM 回答。

  4. 大模型集成與 API 連接

    1. 集成 GPT、星火、文心、GLM 等大模型,配置 API 連接。
    2. 編寫代碼,實現與大模型 API 的交互,以便獲取問題回答。
  5. 核心功能實現

    1. 構建 Prompt Engineering,實現大模型回答功能,根據用戶提問和知識庫內容生成回答。
    2. 實現流式回復,允許用戶進行多輪對話。
    3. 添加歷史對話記錄功能,保存用戶與助手的交互歷史。
  6. 核心功能迭代優化

    1. 進行驗證評估,收集 Bad Case。
    2. 根據 Bad Case 迭代優化核心功能實現。
  7. 前端與用戶交互界面開發

    1. 使用 Gradio 和 Streamlit 搭建前端界面。
    2. 實現用戶上傳文檔、創建知識庫的功能。
    3. 設計用戶界面,包括問題輸入、知識庫選擇、歷史記錄展示等。
  8. 部署測試與上線

    1. 部署問答助手到服務器或云平臺,確保可在互聯網上訪問。
    2. 進行生產環境測試,確保系統穩定。
    3. 上線并向用戶發布。
  9. 維護與持續改進

    1. 監測系統性能和用戶反饋,及時處理問題。
    2. 定期更新知識庫,添加新的文檔和信息。
    3. 收集用戶需求,進行系統改進和功能擴展。

整個流程將確保項目從規劃、開發、測試到上線和維護都能夠順利進行,為用戶提供高質量的基于個人知識庫的問答助手。

配置github

  1. 打開網址鏈接:https://github.com/features/codespaces
  2. 登錄你的 GitHub 賬戶
  3. 點擊圖示?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

  1. 打開 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”頁面。

  1. 單擊要停止的 codespace 右側的省略號 (...)。
  2. 單擊“停止 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\miniconda3D:\Users\app\miniconda3\Scripts 加入系統或用戶的 Path 環境變量中,而不是用 CONDA PATH

下一步建議:

  1. 打開一個新的命令提示符窗口(CMD 或 PowerShell)。

  2. 輸入:

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])?

說明這個環境 已經存在


使用已有環境

  1. n 回車(不要刪除環境);

  2. 然后激活環境并在其中安裝你需要的包:

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 內置終端)」

  1. 在 Windows 開始菜單中搜索 Anaconda Prompt 或者 PowerShell

  2. 打開后輸入:

    conda activate llm-universe

  3. 如果可以正常激活,說明 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")

解決辦法:手動創建缺失的文件夾

請按以下步驟操作:

  1. 打開文件資源管理器。

  2. 進入路徑:C:\Users\app\Documents\

  3. 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)保持路徑一致。

接下來

  1. 保存該 profile.ps1 文件。

  2. 重新打開 VSCode 或 PowerShell 終端。

  3. 運行:

powershellconda activate llm-universe 

如果一切正常,conda 應該就可以被正常激活了?

?

?

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/diannao/82857.shtml
繁體地址,請注明出處:http://hk.pswp.cn/diannao/82857.shtml
英文地址,請注明出處:http://en.pswp.cn/diannao/82857.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

基于Java的家政服務平臺設計與實現(代碼+數據庫+LW)

摘 要 現代經濟快節奏發展以及不斷完善升級的信息化技術&#xff0c;讓傳統數據信息的管理升級為軟件存儲&#xff0c;歸納&#xff0c;集中處理數據信息的管理方式。本家政服務平臺就是在這樣的大環境下誕生&#xff0c;其可以幫助管理者在短時間內處理完畢龐大的數據信息&a…

Android中LinearLayout線性布局使用詳解

Android中LinearLayout線性布局使用詳解 LinearLayout&#xff08;線性布局&#xff09;是Android中最基礎、最常用的布局之一&#xff0c;它按照水平或垂直方向依次排列子視圖。 基本特性 方向性&#xff1a;可以設置為水平(horizontal)或垂直(vertical)排列權重&#xff1…

LVS+keepalived實戰案例

目錄 部署LVS 安裝軟件 創建VIP 創建保存規則文件 給RS添加規則 驗證規則 部署RS端 安裝軟件 頁面內容 添加VIP 配置系統ARP 傳輸到rs-2 客戶端測試 查看規則文件 實現keepalived 編輯配置文件 傳輸文件給backup 修改backup的配置文件 開啟keepalived服務 …

(C語言)超市管理系統(測試版)(指針)(數據結構)(二進制文件讀寫)

目錄 前言&#xff1a; 源代碼&#xff1a; product.h product.c fileio.h fileio.c main.c 代碼解析&#xff1a; fileio模塊&#xff08;文件&#xff08;二進制&#xff09;&#xff09; 寫文件&#xff08;保存&#xff09; 函數功能 代碼逐行解析 關鍵知識點 讀文…

ubuntu----100,常用命令2

目錄 文件與目錄管理系統信息與管理用戶與權限管理網絡配置與管理軟件包管理打包與壓縮系統服務與任務調度硬件信息查看系統操作高級工具開發相關其他實用命令 在 Ubuntu 系統中&#xff0c;掌握常用命令可以大幅提升操作效率。以下是一些常用的命令&#xff0c;涵蓋了文件管理…

WiFi密碼查看器打開軟件自動獲取數據

相信有很大一部分人都不知道怎么看已經連過的WiFi密碼。 你還在手動查詢自己的電腦連接過得WiFi密碼嗎&#xff1f; —————【下 載 地 址】——————— 【本章單下載】&#xff1a;https://drive.uc.cn/s/dbbedf933dad4 【百款黑科技】&#xff1a;https://ucnygalh6…

開目新一代MOM:AI賦能高端制造的破局之道

導讀 INTRODUCTION 在高端制造業智能化轉型的深水區&#xff0c;企業正面臨著個性化定制、多工藝場景、動態生產需求的敏捷響應以及傳統MES柔性不足的考驗……在此背景下&#xff0c;武漢開目信息技術股份有限公司&#xff08;簡稱“開目軟件”&#xff09;正式發布新一代開目…

Android開發-視圖基礎

在Android應用開發中&#xff0c;視圖&#xff08;View&#xff09;是構建用戶界面的基本元素。無論是按鈕、文本框還是復雜的自定義控件&#xff0c;它們都是基于View類或其子類實現的。掌握視圖的基礎知識對于創建功能強大且美觀的應用至關重要。本文將深入探討Android中的視…

無人機信號線被電磁干擾導致停機

問題描述&#xff1a; 無人機飛控和電調之間使用PWM信號控制時候&#xff0c;無人機可以正常起飛&#xff0c;但是在空中懸停的時候會出現某一個電機停機&#xff0c;經排查電調沒有啟動過流過壓等保護&#xff0c;定位到電調和飛控之間的信號線被干擾問題。 信號線被干擾&am…

VSCode設置SSH免密登錄

引言 2025年05月13日20:21:14 原來一直用的PyCharn來完成代碼在遠程服務器上的運行&#xff0c;但是PyCharm時不時同步代碼會有問題。因此&#xff0c;嘗試用VSCode來完成代碼SSH遠程運行。由于VSCode每次進行SSH連接的時候都要手動輸入密碼&#xff0c;為了解決這個問題在本…

硬密封保溫 V 型球閥:恒溫工況下復雜介質控制的性價比之選-耀圣

硬密封保溫 V 型球閥&#xff1a;恒溫工況下復雜介質控制的性價比之選 在瀝青儲運、化學原料加工、食品油脂輸送等工業領域&#xff0c;帶顆粒高粘度介質與料漿的恒溫輸送一直是生產的關鍵環節。普通閥門在應對此類介質時&#xff0c;常因溫度流失導致介質凝結堵塞、密封失效&…

最終一致性和強一致性

最終一致性和強一致性是分布式系統中兩種不同的數據一致性模型&#xff0c;它們在數據同步的方式和適用場景上有顯著區別&#xff1a; 1. 強一致性&#xff08;Strong Consistency&#xff09; 定義&#xff1a;所有節點&#xff08;副本&#xff09;的數據在任何時刻都保持一…

基于單應性矩陣變換的圖像拼接融合

單應性矩陣變換 單應性矩陣是一個 3x3 的可逆矩陣&#xff0c;它描述了兩個平面之間的投影變換關系。在圖像領域&#xff0c;單應性矩陣可以將一幅圖像中的點映射到另一幅圖像中的對應點&#xff0c;前提是這兩幅圖像是從不同視角拍攝的同一平面場景。 常見的應用場景&#x…

如何同步虛擬機文件夾

以下是一些常見的同步虛擬機文件夾的方法&#xff1a; 使用共享文件夾&#xff08;以VMware和VirtualBox為例&#xff09; - VMware&#xff1a;打開虛擬機&#xff0c;選擇“虛擬機”->“設置”&#xff0c;在“選項”中選擇“共享文件夾”&#xff0c;點擊“添加”選擇…

前端流行框架Vue3教程:15. 組件事件

組件事件 在組件的模板表達式中&#xff0c;可以直接使用$emit方法觸發自定義事件 觸發自定義事件的目的是組件之間傳遞數據 我們來創建2個組件。父組件&#xff1a; ComponentEvent.vue,子組件&#xff1a;Child.vue Child.vue <script> export default {// 子組件通…

Python+1688 API 開發教程:實現商品實時數據采集的完整接入方案

在電商行業競爭日益激烈的當下&#xff0c;掌握商品實時數據是企業制定精準營銷策略、優化供應鏈管理的關鍵。1688 作為國內重要的 B2B 電商平臺&#xff0c;其開放平臺提供了豐富的 API 接口&#xff0c;借助 Python 強大的數據處理能力&#xff0c;我們能夠高效實現商品數據的…

聊一聊Electron中Chromium多進程架構

Chromium 多進程架構概述 Chromium 的多進程架構是其核心設計之一&#xff0c;旨在提高瀏覽器的穩定性、安全性和性能。Chromium 將不同的功能模塊分配到獨立的進程中&#xff0c;每個進程相互隔離&#xff0c;避免了單進程架構中一個模塊的崩潰導致整個瀏覽器崩潰的問題。 在…

CodeBuddy 中國版 Cursor 實戰:Redis+MySQL雙引擎驅動〈王者榮耀〉戰區排行榜

文章目錄 一、引言二、系統架構設計2.1、整體架構概覽2.2、數據庫設計2.3、后端服務設計 三、實戰&#xff1a;從零構建排行榜3.1、開發環境準備3.2、用戶與戰區 數據管理3.2.1、MySQL 數據庫表創建3.2.2、實現用戶和戰區數據的 CURD 操作 3.3、實時分數更新3.4、排行榜查詢3.5…

Oracle OCP認證考試考點詳解083系列15

題記&#xff1a; 本系列主要講解Oracle OCP認證考試考點&#xff08;題目&#xff09;&#xff0c;適用于19C/21C,跟著學OCP考試必過。 71. 第71題&#xff1a; 題目 解析及答案&#xff1a; 關于在 Oracle 18c 及更高版本中基于 Oracle 黃金鏡像的安裝&#xff0c;以下哪…

LS-NET-012-TCP的交互過程詳解

LS-NET-012-TCP的交互過程詳解 附加&#xff1a;TCP如何保障數據傳輸 TCP的交互過程詳解 一、TCP協議核心交互流程 TCP協議通過三次握手建立連接、數據傳輸、四次揮手終止連接三大階段實現可靠傳輸。整個過程通過序列號、確認應答、窗口控制等機制保障傳輸可靠性。 1.1 三次…