大模型通常指在大规模数据上训练的机器学习或深度学习模型,这些模型有大量的参数,能够捕抓复杂的数据模式及关系。对于应用开发人员来说,虽然不是严格定义,但是对于规模超过 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 = Client("http://localhost:11434")
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']
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 解决