Pytorch与LLM

Python安装(conda环境可忽略)

1) 下载3.10.x版本
2) 成功安装后显示



CUDA安装&cuDNN

1)>nvidia-smi,查看CUDA版本,官网下载对应的安装包
2)安装成功后,调用命令>nvcc -V,成功安装后,显示对应的版本信息
3)下载对应版本的cuDNN版本


Conda环境安装Pytorch

1) 本地可安装miniconda,可以直接安装pytorch;
2) 安装成功后,如下显示


3) 查看环境变量



4) 通过pip安装pytorch CUDA版本
 打开cmd,输入如下命令,查看CUDA版本

>nvidia-smi


5) 打开Anaconda Prompt,创建一个虚拟环境
 这种方式只能在self-env环境下使用torch

(base)>conda create -n self-env python=3.8 //self-env 可以设定为pytorch的版本
(base)>conda activate self-env
(base)>conda env list
# conda environments:
#
base                  *  D:\APPForUser\Miniconda3
self-env              D:\APPForUser\Miniconda3\envs\self-env

(self-env)>pip3 install     //安装pytorch
(self-env)>conda list       //如下显示安装成功
torch                     2.7.0+cu118              pypi_0    pypi
torchaudio                2.7.0+cu118              pypi_0    pypi
torchvision               0.22.0+cu118             pypi_0    pypi

(self-env)>conda deactivate     //退出self-env用户环境
(base)>


或者,这种方式使用已经安装的python或者其他库版本,self-env 可以设定为pytorch的版本

>conda create --no-default-packages -n self-env
>conda activate self-env


Pytorch 环境部署(非conda环境)

1)确保CUDA和cuDNN已经安装,官网搜索对应的安装版,执行安装操作
2)注意查看CUDA版本

 

LLM部署一 应用部署之Ollama

1)配置环境变量,设置模型下载路径
   OLLAMA_MODELS      D:\Ollama_Modules
2)本地部署,可以下载Ollama安装

>.\OllamaSetup.exe /DIR="d:\ollama"
>ollama list  //成功安装

3)查看GPU ID,指定 Ollama 使用特定的 GPU, CUDA_VISIBLE_DEVICES 环境变量。

>nvidia-smi -L

4)执行对应的大语言模型库,注意配置ollama使用GPU

>ollama run deepseek-r1:1.5b

5)打开VSCode,安装Cline或者continue插件,并选择ollama,如下




LLM部署二 应用部署之LM Studio

1)下载LM Studio,适合初学者
 


LLM部署三 源码部署

1)下载transformers、vLLM等源码安装

RAG

1) 通常使用自带Embedding模型的RAGFlow版本,RAG是Retrieval-Augmented Generation的简称,意为检索增强生成。RAG其实是一种结合信息检索和生成式人工智能的技术。通俗来说就是大模型在生成回答之前,通过信息检索从外部知识库查找与问题相关的知识,增强生成过程中的信息来源,从而提升生成回答的质量和准确性;
2)大模型具体场景的数据样本的训练,可能一本正经的回胡说八道(大模型的幻觉问题),所以在处理这类专有问题的时候效果欠佳。rag技术的正是通过信息检索手段补充缺失的这部分数据,来解决这类问题的。
3) 解释内容如下
检索(Retrieval):当用户提出问题时,系统会从外部的知识库中检索出与用户输入相关的内容;
增强(Augmentation):系统将检索到的信息与用户的输入结合,扩展模型的上下文。这让生成模型可以利用外部知识,使生成的答案更准确和丰富;
生成(Generation):生成模型基于增强后的输入生成最终的回答。它结合用户输入和检索到的信息,生成符合逻辑、准确且可读的文本内容;

4) Embedding Mode(嵌入模型)是一种将词语、句子或文档转换成数字向量的技术。它通过将高维、离散的输入数据(如文本、图像、声音等)映射到低维、连续的向量空间中,使得计算机能够更好地理解和处理这些数据。在RAG技术中,可以简单理解为,embedding 模型是对知识库文件进行解析的。文本是由自然语言组成的,这种格式不利于机器直接计算相似度。embedding 模型要做的,就是将自然语言转化为高维向量,这样就可以很方便的通过向量来计算他们之间的相似度了,然后通过向量来捕捉到单词或句子背后的语义信息。
 


微调

1) P-Tuning v2的基本原理是在与训练的基础上,通过添加少量的可训练参数,对模型的输出进行微调。优化策略主要包含两个方面: 一采用前缀提示策略,将提示信息添加到模型的每一层中,提高模型输出的准确性;二采用自适应优化策略,根据模型训练过程中的表现,动态调整微调参数的权重,以提高模型的收敛速度和性能。


一些术语

1)AIGC: Artificial Intelligence Generated Content,人工智能生成内容,利用人工智能技术来生成各种形式的内容,包括文字、音乐、图像、视频等;

2)NLP: Natural Language Proccessing,自然语言处理;

3)LLM: Large Language Model,大模型语言,它基于深度学习,采用海量文本数据和大量算例进行训练;训练后的模型能够理解和生成人类语言文本,执行与语言文本相关的任务,包括文本生成、代码补全、文章总结、翻译和情感分析等。

4)Transformer: 在论文Attentions is All you need 中提出的一种深度学习模型,最大的优点是可以并行计算,Encoder-Decoder 架构。因此中间的 Transformer 可以分为两个部分:编码组件和解码组件;Transformer现在广泛用于训练LLM等应用;

4)Transformers库: Hugging Face的Transformers库是一个非常流行的开源库,专门用于自然语言处理(NLP)任务,支持多种预训练模型(如 BERTGPT-2等),并且提供了简单易用的 API 和工具; 支持两种深度学习框架tensorflow和Pytorch

5)CNN和RNN: 早期流行的深度学习模型;

6)CUDA: Compute Unified Device Architecture, 是一种编程模型,它通过利用 (GPU) 的处理能力,可大幅提升计算性能。开发环境包括,nvcc C语言编译器和变成手册;CUDA 是 NVIDIA 开发的“翻译器+工具箱”。能把复杂的计算任务(比如矩阵乘法、神经网络运算)翻译成GPU能理解的指令。没有CUDA,GPU只能处理简单的图形渲染,无法参与深度学习的计算。

6)cuDNN: cuDNN 是专门为深度学习优化的“外挂包”,它基于 CUDA 开发,针对神经网络的关键操作(如卷积、池化层)做了极致优化; 如果用原始 CUDA 开发大模型,就像用菜刀切牛排——能切但效率低。cuDNN直接提供预制好的高效函数,比如把图像识别中的卷积运算速度提升2倍以上,还能减少内存占用,让大模型跑得更流畅。CUDA+cuDNN:GPU 直接调用现成的高效算法,像用计算器秒解方程

7)RAG: Retrieval-Augmented Generation,检索增强生成

8) LLaMA: Meta大模型,LLaMA是Meta(Facebook)开发的一系列开源大语言模型(如LLaMA1、LLaMA2、LLaMA3),基于Transformer架构, 原生模型格式通常是PyTorch的.pth或Hugging Face的safetensors

9) GGUF: GPT-Generated Unified Format专为大型语言模型设计的二进制文件格式,旨在解决存储效率、加载速度、兼容性和扩展性等问题‌; 是一种模型存储和加载的格式,专为在消费级硬件(如CPU和低显存GPU)上高效运行大模型而设计,由llama.cpp团队开发,原始LLaMA模型(如llama-2-7b)经过量化转换为GGUF格式,可在普通电脑上高效运行,总而言之就是一种模型存储和加载格式,转换后的GGUF文件可通过llama.cppOllama等工具在普通CPU或低显存GPU上运行。ollama也是基于GGUF格式的。

10)Safetensors: 一种专门为机器学习设计的张量存储文件格式,用于安全地存储张量的新格式,支持PyTorch、TensorFlow、MindSpore等多个主流框架的模型互通。

11)MCP(Model Context Protocol) 模型上下文协议,旨在实现大模型语言与外部数据源和工具的集成,用来在大模型和数据源之间建立安全双向的连接。MCP 是一个开放协议,它标准化了应用程序向 LLM 提供上下文的方式。

待续中……

### 如何使用 PyTorch 构建大型语言模型 (LLM) 构建一个具有百万参数的大规模语言模型是一项复杂的任务,涉及多个阶段的设计实现。以下是关于如何利用 PyTorch 来完成这一目标的关键要点。 #### 安装依赖项 为了开始构建 LLM,首先需要安装必要的库和工具链。可以通过 `pip` 命令来安装所需的包[^2]: ```bash pip install torch torchvision torchaudio pip install --extra-index-url https://download.pytorch.org/whl/test/cu118 llama-recipes ``` 这些命令会帮助设置环境并引入支持大规模训练的基础组件。 #### 数据准备 数据集的选择对于任何机器学习项目都至关重要。在构建 LLM 的过程中,通常会选择大量文本语料作为输入源。常见的做法是从公开可用的数据集中提取信息,比如 Wikipedia 或 Common Crawl。预处理步骤可能包括但不限于分词、清洗以及转换成适合神经网络消费的形式[^1]。 #### 模型架构设计 现代 LLM 大多基于 Transformer 结构,这种结构能够有效捕捉序列中的长期依赖关系。具体来说: - **编码器解码器模式**: 如果计划开发双向理解能力,则可以考虑采用标准的 Encoder-Decoder 配置。 - **仅解码器变体**: 对于生成式应用而言,“decoder-only”版本更为常见,因为它允许更高效的前向传播计算路径。 这里提供了一个简单的单层 transformer 实现框架供参考: ```python import torch.nn as nn class SimpleTransformer(nn.Module): def __init__(self, vocab_size, d_model=512, nhead=8, num_layers=6): super(SimpleTransformer, self).__init__() self.embedding = nn.Embedding(vocab_size, d_model) self.transformer = nn.Transformer(d_model=d_model, nhead=nhead, num_encoder_layers=num_layers, num_decoder_layers=num_layers) def forward(self, src, tgt): embedded_src = self.embedding(src) embedded_tgt = self.embedding(tgt) output = self.transformer(embedded_src.permute(1,0), embedded_tgt.permute(1,0)) return output.permute(1,0) ``` 此代码片段定义了一种基础形式的变压器类,其中包含了嵌入层和核心变换操作部分。 #### 训练过程管理 一旦完成了上述准备工作之后就可以着手进行实际训练环节了。这一步骤涉及到损失函数设定、优化算法挑选等方面的内容。例如,在很多情况下人们倾向于选用交叉熵作为衡量预测效果好坏的标准;而 AdamW 则是一种广泛应用于深度学习领域内的自适应梯度下降方法之一。 另外值得注意的是,在面对超大尺寸模型的时候还需要特别关注内存分配策略等问题——通过调整 batch size 参数大小或者启用 gradient checkpointing 技术等方式可以在一定程度上缓解显存压力。 #### 测试评估性能表现 最后当整个流程结束以后应当针对测试集合执行推理动作进而获取最终成果展示出来给用户看。同时也可以借助一些指标如 perplexity 等进一步量化分析所得结果的质量水平。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值