15天学会AI应用开发(六)使用离线大模型对文本生成摘要

​上一篇文章末尾使用了在线大模型压缩文本生成摘要,但该方式会消耗Token,不便初学者长期使用,更好的办法是采用离线大模型来生成文本摘要。

一、离线大模型的种类

国内常用的离线大模型有阿里Qwen、智谱GLM、深度求索DeepSeek、百度文心等等,以千问的文本大模型为例,又有Qwen1.5-1.8B-Chat和Qwen1.5-0.5B-Chat两种。

Qwen1.5是一系列不同大小的解码器语言模型,包括基础语言模型及其对齐的聊天模型。它基于Transformer架构,使用SwiGLU激活函数、注意力QKV偏置、组查询注意力、滑动窗口注意力与全注意力混合等技术。此外,Qwen1.5还提供了改进后适应多种自然语言和代码的分词器。

其中Qwen1.5-1.8B-Chat的模型页面为 modelscope.cn/models/Qwen... ,名称中的1.8B指的是18亿参数(1.8 Billion),模型文件大小为3.69GB。

Qwen1.5-0.5B-Chat的模型页面为 modelscope.cn/models/Qwen... ,名称中的0.5B指的是5亿参数(0.5 Billion),模型文件大小为1.25GB。

对于大模型来说,参数的数量就是模型的"脑子大小",越多越好。

参数越大(比如1.8B),大模型越聪明、懂的多、逻辑好、写文章 / 推理更强;缺点是占内存 / 硬盘更大、对电脑配置要求更高、跑得慢。

参数越小(比如0.5B),大模型越傻瓜,复杂推理、写长文不行,只能日常聊天、简单问答;优点是占用空间小、手机 / 低配电脑都能离线跑、速度飞快。

本教程涉及到的代码使用场合,推荐使用Qwen1.5-1.8B-Chat,因为0.5B的大模型往往给不出令人满意的回答。

二、下载离线大模型

在下载离线大模型前,要先在命令行执行下面的pip安装命令:

复制代码
pip install modelscope

接着命令行通过cd命令进入Python工程的所在目录,再执行下面的模型下载命令:

css 复制代码
modelscope download --model Qwen/Qwen1.5-1.8B-Chat --local_dir qwen1.5-1.8b-chat

上面下载命令的"--model"参数表示离线大模型为"Qwen/Qwen1.5-1.8B-Chat",而"--local_dir"参数表示离线大模型的本地保存目录。

注意Qwen1.5-1.8B-Chat的总大小为3.69GB,下载过程较耗时,请耐心等待。下载完毕,即可在Python工程的目录下方找到qwen1.5-1.8b-chat文件夹,里面保存的便是Qwen1.5-1.8B-Chat的具体模型文件。

三、使用离线大模型输出摘要

接下来演示如何使用Qwen1.5-1.8B-Chat对一段文本生成摘要。在编写Python代码前,要先在命令行执行下面的pip安装命令:

复制代码
pip install transformers

然后编写下面的Python摘要测试代码:

ini 复制代码
from transformers import AutoTokenizer, AutoModelForCausalLM

model_path = "./qwen1.5-1.8b-chat" # 离线大模型的本地保存目录

def local_model_summary(text: str, max_new_tokens=256) -> str:
    """
    加载本地离线模型 Qwen1.5-1.8B-Chat 做摘要
    【无需联网、无需下载、纯本地运行】
    """

    # 加载本地分词器 + 本地模型(完全离线)
    tokenizer = AutoTokenizer.from_pretrained(
        model_path,
        trust_remote_code=True  # Qwen 必须加这个
    )
    model = AutoModelForCausalLM.from_pretrained(
        model_path,
        trust_remote_code=True,  # Qwen 必须加这个
        dtype="auto",
        device_map="auto"
    ).eval()

    # 构造 Qwen1.5 官方对话格式
    messages = [
        {"role": "system", "content": "请对用户输入的内容做精简摘要,摘要文字压缩在50字以内"},
        {"role": "user", "content": text}
    ]

    # 官方模板构造
    text_input = tokenizer.apply_chat_template(
        messages,
        tokenize=False,
        add_generation_prompt=True
    )

    inputs = tokenizer(
        [text_input],
        return_tensors="pt",
        truncation=True
    ).to(model.device)

    # 离线生成摘要
    outputs = model.generate(
        **inputs,
        max_new_tokens=max_new_tokens, # 返回文本最多占用多少Token
        temperature=0.3,
        top_p=0.7,
        do_sample=True,
        pad_token_id=tokenizer.eos_token_id
    )

    # 提取摘要结果
    response = outputs[0][len(inputs["input_ids"][0]):]
    summary = tokenizer.decode(response, skip_special_tokens=True)
    return summary.strip()

if __name__ == "__main__":
    content = """
    火山方舟是火山引擎推出的大模型平台,提供模型训练、推理、评测、精调等全方位功能与服务。
    平台支持多种主流大模型接入,具有稳定可靠、安全互信的特点。
    企业可以通过火山方舟快速构建自己的AI应用,降低开发成本与技术门槛。
    """

    print("正在使用【本地离线模型】生成摘要...\n")
    result = local_model_summary(content, max_new_tokens=28)
    print("【离线摘要结果】")
    print("-", result)

运行上面的Python代码,输出日志结果如下:

diff 复制代码
【离线摘要结果】
- 火山引擎推出火神引擎平台,集模型训练、推理、评测、精调于一体,为企业构建AI应用节省开发成本和技术

可见离线大模型Qwen1.5-1.8B-Chat输出了原始文本经过压缩后的摘要文字,还支持设置返回内容的Token长度(max_new_tokens),并且不消耗Token,适合初学者练习AI应用开发。

本系列的AI应用开发文章目录为《15天学会AI应用开发全目录(零基础小白,零Token消耗)》。

相关推荐
Georgeviewer3 小时前
商业落地评测|实体门店GEO优化性价比与服务体系深度复盘
大数据·人工智能
GuWenyue4 小时前
分不清AI Workflow与Agent?3个实战案例彻底讲透,做AI应用不再踩选型坑
人工智能
大怪v5 小时前
被AI绑架了!
ai编程
彩讯股份3006345 小时前
彩讯股份与心洲科技签署战略合作协议,共建企业级模型后训练能力
人工智能·科技
Scott9999HH5 小时前
【IIoT流量实战】蒸汽管道阀门全关却仍有流量?用 Python 实现涡街信号 FFT 频谱分析与温压全补偿积算网关,深度拆解靠谱的涡街流量计厂家硬核技术标准
开发语言·python
迅易科技5 小时前
从场景验证到Agent上线:迅易 × WorkBuddy如何帮助企业建设AI能力?
人工智能·ai·腾讯云
腻害兔5 小时前
【若依项目-产品经理视角】深度拆解 RuoYi-Vue-Pro 商城模块:从商品管理到交易引擎,50 张表撑起一整套电商系统
java·大数据·vue.js·产品经理·ai编程
PNP Robotics5 小时前
多伦多大学机器人峰会|物理AI与具身智能落地新趋势
人工智能·深度学习·机器学习·机器人
GIR1235 小时前
官方出品 | 多通道土壤呼吸测量系统市场现状与十五五规划深度报告:行业分析+趋势预测全收录
大数据·人工智能·机器学习
绿算技术5 小时前
绿算技术亮相第十八届HPC AI中国年会,擘画AI基础设施全栈协同新图景
人工智能