【从零入门本地大模型:Ollama 安装部署 + Qwen2.5 实现零样本情感分类】

目录

一、准备工作

[二、安装 Ollama 客户端](#二、安装 Ollama 客户端)

三、一键运行你的第一个大模型

[四、基于 Qwen2.5 实现零样本情感文本分类实战](#四、基于 Qwen2.5 实现零样本情感文本分类实战)

[1. 库导入](#1. 库导入)

[2. 模型路径配置](#2. 模型路径配置)

[3. 模型与分词器加载](#3. 模型与分词器加载)

[4. Prompt 模板设计](#4. Prompt 模板设计)

[5. 输入文本预处理](#5. 输入文本预处理)

[6. 文本编码](#6. 文本编码)

[7. 模型推理](#7. 模型推理)

[8. 结果解码与提取](#8. 结果解码与提取)


Ollama 是一款能让你在本地电脑上一键部署、运行各种大模型的工具。它把模型下载、依赖配置、运行环境全部封装好了,只需要几条命令,就能在你的 Windows 电脑上跑通 Qwen、Llama、Mistral 等热门模型,不用再折腾复杂的 Python 环境。

下面我以 Windows 系统为例,带你从零安装并运行你的第一个本地大模型。

一、准备工作

  1. 系统要求:Windows 10 / 11(推荐 Windows 11)

  2. 硬件建议:

◦ 运行 qwen2.5:1.5b 这类 1.5B 小模型:8G 内存就足够

◦ 想要更流畅:16G 内存 + 独立显卡(NVIDIA 显卡优先)

  1. 网络:全程需要联网下载模型文件

二、安装 Ollama 客户端

  1. 下载安装包

1.打开 Ollama 官网:https://ollama.com/

2.点击 Download for Windows,下载 Windows 安装包

3.双击下载好的 .exe 文件,一路默认安装即可。安装完成后,Ollama 会自动在后台启动服务。

  1. 验证安装是否成功

按 Win + R,输入 cmd 打开命令提示符,输入:

bash 复制代码
ollama --version

如果能输出版本号,就说明安装成功了。

三、一键运行你的第一个大模型

我们以 Qwen2.5-1.5B 为例(就是你截图里用的模型),它体积小、速度快,非常适合新手入门。

  1. 拉取并运行模型

在命令提示符里输入:

bash 复制代码
ollama run qwen2.5:1.5b

执行后,Ollama 会自动拉取模型文件(大约 1GB 左右),下载完成后,你就能直接和模型对话了

四、基于 Qwen2.5 实现零样本情感文本分类实战

在自然语言处理(NLP)领域,文本情感分类是最经典的应用场景之一。传统的文本分类方案需要标注数据集、模型训练与调参,门槛较高。而随着开源大模型的普及,我们可以通过Prompt 提示词工程实现零样本分类,无需训练、无需数据,直接调用本地轻量模型完成任务。

本文将使用阿里开源的Qwen2.5-1.5B-Instruct轻量级大模型,手把手教你实现本地部署的文本情感分类,代码极简、易上手,普通电脑即可运行。

加载本地的 Qwen2.5 大模型,通过自定义提示词(Prompt)告诉模型执行文本情感分类任务,输入一段评论文本,让模型自动判断其情感倾向(正面 / 负面 / 中立),全程本地运行,无需联网。环境准备

首先安装核心依赖库,transformers是 Hugging Face 官方提供的大模型调用库,torch是模型运行的基础框架:

python 复制代码
pip install transformers torch

完整代码实现

1. 库导入

导入大模型加载、分词、张量计算的核心工具,是运行大模型的基础。

python 复制代码
from transformers import AutoModelForCausalLM, AutoTokenizer#先要安装一个第三方库transformers

2. 模型路径配置

指定本地已下载好的 Qwen2.5-1.5B 模型文件夹路径,实现本地离线运行

python 复制代码
#大模型 的 网络 结构 就    自 注意力 机制、
# 假设Qwen是一个生成式模型,并且我们有它的权重和分词器
model_name = r"D:\software\Pycharm\Qwen2.5-1.5B-Instruct"  #只需要写文件路径即可

3. 模型与分词器加载

  • AutoModelForCausalLM:专门加载生成式大模型,适配 Qwen 系列模型;
  • AutoTokenizer:分词工具,完成自然语言与数字编码的相互转换。
python 复制代码
model = AutoModelForCausalLM.from_pretrained(model_name) #加载模型。
tokenizer = AutoTokenizer.from_pretrained(model_name)#对文本进行分词,创建一

4. Prompt 模板设计

这是零样本分类的核心,清晰告诉模型任务目标、待处理文本和可选分类,引导模型输出正确结果。

python 复制代码
# 定义一个Prompt模板
prompt_template = "请判断以下文本属于哪个类别:{text}。可选类别有:正面、负面、中立。"

5. 输入文本预处理

将自定义的评论文本填入 Prompt 模板,构造完整的模型输入指令。

python 复制代码
# 预处理输入文本
input_text = ""这部电影真是太差劲,我非常不喜欢!""  #领域:识别你是否具有抑郁症。
prompt_input = prompt_template.format(text=input_text)

6. 文本编码

分词器将文本转换为模型可识别的input_ids(数字索引)和attention_mask(有效内容掩码)。

python 复制代码
inputs = tokenizer(prompt_input, return_tensors="pt")# 对Prompt进行编码,inputs返回的结果中包含了input_ids和attention_mask

7. 模型推理

调用大模型的生成函数,基于输入指令生成情感分类结果。

python 复制代码
# input_ids:是将输入文本(prompt_input)按照分词器对应的词汇表进行编码后得到的结果,表现为一个张量(torch.Tensor 类型,因为设置了 return_tensors="pt" 表示返回 PyTorch 格式的张量)。这个张量里的每个元素对应词汇表中的一个词(准确说是词对应的索引)
# attention_mask:是用于指示模型在处理输入时应该关注哪些部分的掩码张量,其元素的值通常是 0 或者 1,1 表示对应位置的 input_ids 是有效输入,需要模型去关注和处理;0 表示对应位置是填充部分(比如在批量处理文本且文本长度不一致时进行填充后的那些位置),模型在进行注意力计算等操作时可以忽略这些位置。
# 使用模型进行推理(生成文本)
output_sequences = model.generate(inputs.input_ids, max_new_tokens=512,  # 生成文本的最大长度
                                attention_mask=inputs.attention_mask)

8. 结果解码与提取

将模型输出的数字还原为文字,并剔除输入指令,仅保留分类答案。代码中保留了结果解析的注释,取消注释即可直接输出分类结果。

python 复制代码
# 解码生成的文本
generated_text = tokenizer.decode(output_sequences[0], skip_special_tokens=True)
print(generated_text)


text = generated_text[len(prompt_input):]#大模型需要保存记忆
# # 解析生成的文本以获取分类结果
# # 这里我们假设生成的文本会包含"正面"、"负面"或"中立"中的一个
classification = None
text = generated_text[len(prompt_input):]
if "正面" in text:
    classification = "正面"
elif "负面" in text:
    classification = "负面"
elif "中立" in text:
    classification = "中立"

# 输出分类结果
print(f"分类结果:{classification}")

完整代码:

python 复制代码
from transformers import AutoModelForCausalLM, AutoTokenizer#先要安装一个第三方库transformers
#安装transformers,大模型的开发库
#大模型 的 网络 结构 就    自 注意力 机制、
# 假设Qwen是一个生成式模型,并且我们有它的权重和分词器
model_name = r"D:\software\Pycharm\Qwen2.5-1.5B-Instruct"  #只需要写文件路径即可
model = AutoModelForCausalLM.from_pretrained(model_name) #加载模型。
tokenizer = AutoTokenizer.from_pretrained(model_name)#对文本进行分词,创建一
# 定义一个Prompt模板
prompt_template = "请判断以下文本属于哪个类别:{text}。可选类别有:正面、负面、中立。"
# 预处理输入文本
input_text = ""这部电影真是太差劲,我非常不喜欢!""  #领域:识别你是否具有抑郁症。
prompt_input = prompt_template.format(text=input_text)

inputs = tokenizer(prompt_input, return_tensors="pt")# 对Prompt进行编码,inputs返回的结果中包含了input_ids和attention_mask
# input_ids:是将输入文本(prompt_input)按照分词器对应的词汇表进行编码后得到的结果,表现为一个张量(torch.Tensor 类型,因为设置了 return_tensors="pt" 表示返回 PyTorch 格式的张量)。这个张量里的每个元素对应词汇表中的一个词(准确说是词对应的索引)
# attention_mask:是用于指示模型在处理输入时应该关注哪些部分的掩码张量,其元素的值通常是 0 或者 1,1 表示对应位置的 input_ids 是有效输入,需要模型去关注和处理;0 表示对应位置是填充部分(比如在批量处理文本且文本长度不一致时进行填充后的那些位置),模型在进行注意力计算等操作时可以忽略这些位置。
# 使用模型进行推理(生成文本)
output_sequences = model.generate(inputs.input_ids, max_new_tokens=512,  # 生成文本的最大长度
                                attention_mask=inputs.attention_mask)
# 解码生成的文本
generated_text = tokenizer.decode(output_sequences[0], skip_special_tokens=True)
print(generated_text)


text = generated_text[len(prompt_input):]#大模型需要保存记忆
# # 解析生成的文本以获取分类结果
# # 这里我们假设生成的文本会包含"正面"、"负面"或"中立"中的一个
classification = None
text = generated_text[len(prompt_input):]
if "正面" in text:
    classification = "正面"
elif "负面" in text:
    classification = "负面"
elif "中立" in text:
    classification = "中立"

# 输出分类结果
print(f"分类结果:{classification}")

执行代码后,控制台会输出模型的完整回复,示例如下:

bash 复制代码
C:\Users\Dell\AppData\Local\Programs\Python\Python39\python.exe D:\software\Pycharm\大模型\代码\1、Qwen文本分类.py 
请判断以下文本属于哪个类别:"这部电影真是太差劲,我非常不喜欢!"。可选类别有:正面、负面、中立。 这段文本属于"负面"类别。

原因如下:
1. "这部电影真是太差劲",这句话直接表达了对电影的不满和失望。
2. "我非常不喜欢!"进一步强调了作者对于该电影的强烈负面情感。
3. 文本中的所有措辞都是消极的评价,没有任何积极或中性的元素。

因此,这段文本明确表达了一种负面的情感反应,符合"负面"类别的定义。
分类结果:负面

进程已结束,退出代码0
相关推荐
徐健峰1 小时前
GPT-image-2 热门玩法实战(二):AI 面相分析 & 个人色彩诊断 — 上传自拍秒出专业报告
人工智能·gpt
冰西瓜6001 小时前
深度学习的数学原理(三十二)—— Transformer全场景掩码机制详解
人工智能·深度学习·transformer
绘梨衣5471 小时前
Agentic RAG、传统RAG、ReAct、Function Calling 核心关系
人工智能·chatgpt·tensorflow
玩转单片机与嵌入式1 小时前
嵌入式AI场景:哪些应用场景不适合将AI模型部署到单片机(MCU)中?
人工智能·单片机·嵌入式硬件
MediaTea1 小时前
AI 术语通俗词典:随机搜索
人工智能
憨波个2 小时前
【说话人日志】DOVER-Lap:overlap-aware diarization 输出融合算法
人工智能·深度学习·算法·音频·语音识别
暗夜猎手-大魔王2 小时前
转载--AI Agent 架构设计:Agent 的自我欺骗(OpenClaw、Claude Code、Hermes Agent 对比)
人工智能
智枢圈2 小时前
Function-Calling与工具使用
人工智能
司南-70492 小时前
Dense结构下的 大模型系统架构研究
服务器·人工智能·后端