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.mzph.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 三次…