大模型初次使用

大模型通常指在大规模数据上训练的机器学习或深度学习模型,这些模型有大量的参数,能够捕抓复杂的数据模式及关系。对于应用开发人员来说,虽然不是严格定义,但是对于规模超过 1 B 的模型称为大模型,1 B 表示十亿。

一般来说,LLM 的直接使用就是向其传递一段文本,输出一段文本,以下以本地模型部署工具 ollama 为示例,演示如何向 LLM “提问”

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
from ollama import Client

# 创建一个Client实例,用于与Ollama API进行交互
client = Client("http://localhost:11434")

# 定义一个函数,该函数接收一个提示并返回AI的响应
def ask_question(prompt,model_name='qwen2.5:latest'):
    """
    该函数通过Ollama API将提示发送给LLM,并返回其响应。
    :param prompt: 用户提出的问题
    :return: 根据给定提示生成的AI响应
    """

    # 将带有必要参数的提示与客户端实例一起发送
    ai_response = client.generate(model_name,prompt)
    return ai_response['response']

# 向LLM提出一个问题
question = "一句话概括大模型?"
print(f"问题:{question}\n答案:{ask_question(question)}")

问题:一句话概括大模型?
    答案:大模型是指参数规模庞大、能够处理复杂任务的机器学习或深度学习模型。

大模型能够被使用的前提是:在大规模参数及大量训练数据情况下,模型捕抓了数据的深层次复杂模式及关系,表现出以下的涌现能力

  • 1)上下文学习(Context Learning):大模型能够理解和记住输入的上下文,使得它可以生成上下文相关的输出,比如给 LLM 输入故事的开头,它可以生成一个相关的故事结尾
  • 2)指令遵循(Instruction Following):大模型能理解并遵循输入指令。要求它表格输出,它就会表格输出内容
  • 3)多任务学习(Multitask Learning):大模型可以在同一时间处理多种任务,比如要求它将文本翻译为英文,并且将文本进行分类
  • 4)零样本或少样本学习(Zero-Shot or Few-Shot Learning):在没有或者只有少量文本情况下学习新任务
  • 5)常识推理(Common Sense Reasoning):可能根据已经学习到的知识,进行常识推理,比如 “火是热的”,“冰是冷的” 等概念呢
1
2
3
# 上下文学习能力
question = "以‘李华深夜学习大模型’为主题写一个故事"
print(f"问题:{question}\n答案:{ask_question(question)}")
1
2
3
4
5
6
7
8
9
问题:以‘李华深夜学习大模型’为主题写一个故事
答案:在一个宁静的夜晚,月光如水,城市的喧嚣逐渐沉寂。在一座高楼林立的城市中,有一间灯光依旧亮着的小屋,那就是李华的家。不同于其他家庭已经进入了梦乡,李华正在为一项特别的任务而忙碌着。
李华是一名计算机科学的学生,他一直对自然语言处理有着浓厚的兴趣。这次,他的教授布置了一个项目——开发一个能够理解并生成人类语言的大模型。这不仅是一项挑战,更是一次探索人工智能前沿的机会。为了能在规定的时间内完成任务,李华决定利用这个深夜来推进自己的工作。
李华打开电脑,启动了他为大模型专门准备的软件环境。屏幕上显示出一系列复杂的代码和算法。这些是他和团队共同开发的技术结晶,每一行都凝聚着他们的智慧与心血。“从数据预处理到模型训练,每一步都不能有丝毫的马虎。”李华心想。
在这个过程中,李华遇到了不少难题。有时候,算法的表现不如预期;有时是数据集的选择需要再斟酌;还有一些时候,则是因为技术细节上的理解不透彻。面对这些问题,李华并没有轻易放弃,他反复查阅资料、调整参数、优化模型,甚至与团队成员讨论交流。
经过几个小时的努力后,李华终于在凌晨时分有了突破性的进展——他的大模型开始能够更准确地理解和生成人类语言了!那一刻,所有的辛苦和付出都化为了喜悦。看着屏幕上的结果显示,他紧绷的神经得以放松,脸上露出了满意的微笑。
这次经历不仅让李华对自然语言处理技术有了更深的理解,也让他学会了面对挑战时不轻言放弃的重要性。他意识到,真正的创新往往来自于不断探索和克服困难的过程。
当第一缕晨光透过窗户洒进屋内时,李华完成了他的工作,但他知道这只是一个开始。未来还有更多的未知等待着他去探索、去发现……
这就是“李华深夜学习大模型”的故事,它不仅仅是一个技术上的突破,更是一段关于坚持与梦想的旅程。
1
2
3
4
5
6
7
8
9
# 指令遵循
question = "langchian、LlamaIndex、Semantic Kernel有什么区别,仅输出表格内容"

from IPython.display import Markdown
display(Markdown(ask_question(question)))

# 上下文学习能力
question = "将“大模型”翻译为英文,并计算英文翻译中字母e出现的次数"
print(f"问题:{question}\n答案:{ask_question(question)}")

问题:将 “大模型” 翻译为英文,并计算英文翻译中字母 e 出现的次数
    答案:“大模型 "可以翻译成英文为"large model”。在这个短语里,字母’e’出现了 1 次。

1
2
3
# 零样本或者少样本学习能力
question = "现有数字3、7、15、31,请问下一个数字是什么?"
print(f"问题:{question}\n答案:{ask_question(question)}")
1
2
3
4
5
6
问题:现有数字3、7、15、31,请问下一个数字是什么?
答案:观察给定的数列:3、7、15、31。
我们可以发现,从第一个数到第二个数增加了4(即 7 - 3 = 4),从第二个数到第三个数增加了8(即 15 - 7 = 8),从第三个数到第四个数增加了16(即 31 - 15 = 16)。
这里似乎有一个规律:每次增加的值是2的幂次方,分别是 \(2^2, 2^3, 2^4\)。按照这个规律,下一个增加的值应该是 \(2^5=32\)。
所以,从最后一个数31开始加32,得到的下一个数字是63。
因此,这个数列的下一个数字是63。
1
2
3
4
# 常识推理
question = "一个物体从高10米的地方松手,问这个物体1秒后在什么位置?"
from IPython.display import Markdown
display(Markdown(ask_question(question)))
1
2
3
4
5
6
7
8
9
10
11
要解决这个问题,我们可以使用自由落体运动的基本公式。在地球表面附近,忽略空气阻力的情况下,物体做自由落体运动的位移可以用以下公式计算:
\[h = \frac{1}{2} g t^2\]
其中:
- \(h\) 代表物体下落的距离(米),
- \(g\) 是重力加速度,在地球表面附近大约为9.8 m/s²,
- \(t\) 是时间,以秒为单位。
题目中提到的时间是1秒,所以我们可以将这些值代入公式计算:
\[h = \frac{1}{2} \times 9.8 \, \text{m/s}^2 \times (1\, \text{s})^2 = 4.9\, \text{米}\]
因此,在1秒后,物体将从起始位置下落了大约4.9米。由于初始高度是10米,那么在1秒后的瞬间,该物体距离地面的高度将是:
\[10\, \text{米} - 4.9\, \text{米} = 5.1\, \text{米}\]
所以,在1秒后,这个物体将位于初始高度下方大约4.9米处(或者说,它距离地面还有约5.1米)。

这个脚本是关于如何使用大语言模型(LLM)进行自然语言处理任务的。它展示了如何与这些模型交互以获取答案或生成内容。该脚本涵盖了上下文学习、指令遵循、多任务学习、零样本学习和常识推理等能力。每种能力都有自己的应用场景和效果

值得注意的是,在统计 "large model" 中字母’e’的数量时,大模型并没有给出正确答案,下一章节通过设计 prompt 解决