Hello-Agents task2 大语言模型基础

参考链接:hello-agents/docs/chapter3 at main · datawhalechina/hello-agents

N-gram模型(马尔科夫假设)---词出现的概念与前面有关的n-1个词有关。

局限性:数据稀疏性---没出现就没关系吗? 泛化能力---坤哥和太美啥关系?

词向量化:一个语义空间,每个点就是一个词,这个点就是向量,该向量称为词向量(词嵌入)语义相关的词在空间上也挨着近。下个词出现的概率与前n-1个词向量有关。

局限性:上下问能力受限,受限于前n-1个词向量

RNN:通过记录隐藏状态向量,拥有短暂的记忆。

局限性:长时间向后传播时,就会梯度爆炸或消失。

LSTM:引入细胞状态和一些门控制机制,来顺畅传递信息与决定哪些输入或输出。

局限性:按顺序进行处理。

Transformer

编码器:理解句子,生成向量

解码器:参考前文生成句子,并咨询编码器理解句子

自注意力:提出权重的概念,QKV,在整个序列中动态聚合相关信息。前馈网络的作用从这些聚合后的信息中提取更高阶的特征

Decode-Only

GPT的核心,预测下一个最有可能出现的词。自回归的工作模式。掩码注意力确保不会先看后面的词。

优势:简单易用可扩展,适合生成式任务。

提示工程

可以通过零样本,单/少量样本让模型进行输出。(自学习,给一个例子自己扩展,多个几个例子自己举一反三)

指令调优也是一种微调的手段,目前是引导,规范,约束模型生成正常目标的方法,可以提示(nice to meet your,下一句你要按套路回答);cosplay,cot(一步一步来)

分词器相关操作查看代码就可以,很详细。这里贴出自己的代码

改动点:1.下载改为https://hf-mirror.com/ 2.模型改为qwen3:0.6b

修改下载链接和生效参考

https://zhuanlan.zhihu.com/p/1940410590507037577

完整代码

python 复制代码
import torch
from transformers import AutoModelForCausalLM, AutoTokenizer

# 指定模型ID
model_id = "Qwen/Qwen3-0.6B"

# 设置设备,优先使用GPU
device = "cuda" if torch.cuda.is_available() else "cpu"
print(f"Using device: {device}")


# 加载分词器
tokenizer = AutoTokenizer.from_pretrained(model_id)

# 加载模型,并将其移动到指定设备
model = AutoModelForCausalLM.from_pretrained(model_id).to(device)

print("模型和分词器加载完成!")

messages = [
    {"role": "system", "content": "You are a helpful assistant."},
    {"role": "user", "content": "冰雪大世界在哪个城市"}
]

# 使用分词器的模板格式化输入
text = tokenizer.apply_chat_template(
    messages,
    tokenize=False,
    add_generation_prompt=True
)

# 编码输入文本
model_inputs = tokenizer([text], return_tensors="pt").to(device)

print("编码后的输入文本:")
print(model_inputs)

# 使用模型生成回答
# max_new_tokens 控制了模型最多能生成多少个新的Token
generated_ids = model.generate(
    model_inputs.input_ids,
    max_new_tokens=512
)

# 将生成的 Token ID 截取掉输入部分
# 这样我们只解码模型新生成的部分
generated_ids = [
    output_ids[len(input_ids):] for input_ids, output_ids in zip(model_inputs.input_ids, generated_ids)
]

# 解码生成的 Token ID
response = tokenizer.batch_decode(generated_ids, skip_special_tokens=True)[0]

print("\n模型的回答:")
print(response)

输出

bash 复制代码
Using device: cuda
模型和分词器加载完成!
编码后的输入文本:
{'input_ids': tensor([[151644,   8948,    198,   2610,    525,    264,  10950,  17847,     13,
         151645,    198, 151644,    872,    198, 106957,  26288,  99489,  18493,
         104673,  99490, 151645,    198, 151644,  77091,    198]],
       device='cuda:0'), 'attention_mask': tensor([[1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
         1]], device='cuda:0')}
The attention mask is not set and cannot be inferred from input because pad token is same as eos token. As a consequence, you may observe unexpected behavior. Please pass your input's `attention_mask` to obtain reliable results.

模型的回答:
<think>
好的,用户问的是"冰雪大世界在哪个城市"。首先,我需要确定用户指的是哪个著名的冰雪大世界。在中国,最著名的冰雪大世界应该是在哈尔滨。不过,用户可能没有明确说出,所以需要确认是否还有其他可能。

接下来,我应该考虑用户可能的背景。可能是游客、学生,或者对冰雪运动感兴趣的人。用户可能想知道具体的地点,或者有其他问题需要解答。需要确保回答准确,并且提供足够的信息帮助用户解决问题。

此外,用户可能没有意识到冰雪大世界的存在,所以需要明确指出哈尔滨是正确的答案。同时,可以补充其他可能的地点,但保持回答简洁。要避免提供错误的信息,确保用户得到正确的答案。
</think>

中国的著名冰雪大世界位于**哈尔滨市**。

最后说下模型的选择,一般是基于:成本,安全与隐私,能力,生态链,微调等这些考虑选择。

同时幻觉是模型自带的属性,模型一直都会自己以为自己行的。解决的话可以从数据层,推理层,模型架构方向考虑改进。

相关推荐
渡我白衣1 小时前
字符串的陷阱与艺术——std::string全解析
网络·c++·人工智能·自然语言处理·智能路由器·信息与通信·caffe
music&movie2 小时前
多模态工程师面试--准备
人工智能
机器之心2 小时前
GPT-5.1发布,OpenAI开始拼情商
人工智能·openai
YangYang9YangYan2 小时前
高职单招与统招比较及职业发展指南
大数据·人工智能·数据分析
AI科技星2 小时前
宇宙膨胀速度的光速极限:基于张祥前统一场论的第一性原理推导与观测验证
数据结构·人工智能·经验分享·python·算法·计算机视觉
Mintopia2 小时前
🚀 共绩算力:3分钟拥有自己的图像优化服务-CodeFormer:先进的图像算法优化、修复马赛克、提升图片清晰度等
前端·人工智能·ai编程
南山安2 小时前
🚀 从“Hulk”扩展开发实战,聊聊我找到的“Vibe Coding”最佳姿势
人工智能·设计
金紫火2 小时前
OpenAI 新推 GPT-5-Codex-Mini:一款针对开发者的轻量级编码助手
人工智能
一起养条鱼吧2 小时前
🧩 Argon2 密码哈希
人工智能·后端