CUDA,英伟达的科技护城河

CUDA可以说是英伟达的科技护城河,那么CUDA是什么时候发布的,作用是什么呢?

这就得说早起电脑,计算核心就一个CPU,CPU虽然计算速度快,但是需要串行计算。即使是多任务,也是切换计算,而不是同时计算。这样日常办公的计算量是可以应付的,但是玩游戏,页面渲染计算量比较大的时候,就会很困难。例如一个画面是汽车爆炸,满天的碎片,每个碎片的运动轨迹,CPU一个个算,CPU不用干别的了。

所以这个时候,就出现了GPU,GPU和CPU的区别是,可以并行计算。

比如爆炸,每个粒子的运动轨迹单独计算,并行计算效率就会提高很多,这就是GPU的能力。所以打游戏得装显卡,用CPU算他有点扛不住。

有朋友又说,那我所有计算都用GPU行吗,并行计算效率高呀。

这就得说两点,

第一,GPU适合简单的运算,对于复杂的计算,还是需要CPU才能处理。

第二,GPU早起只能识别图形数据,比如程序员想要做一个矩阵乘法,还得先把数据包装成图形数据,图形通过GPU计算,拿到图形数据的结果之后,还得把想要的结果从图形数据里分离出来。听着感觉是在脱裤子放屁,但你不这么用,还真就用不了。

针对第二点,英伟达做出了优化。2006英伟达发布了CUDA,目的是让程序员更方便地发挥GPU的能力实现通用计算,就用调接口就行了,不用单独处理图形逻辑,就能实现并行计算。

Read More

AI对话的三个技巧

今天咱们讲和AI对话的常用技巧。内容包括下面几个:

  1. 让AI验证自己的观点
  2. 让AI给向我们提问
  3. 让AI生成提示词

1. 验证自己的观点

如果我有一个想法或是观点,不确定是否正确,可以让AI来评价自己的管带你。

比如提示词可以是:

我认为生成式AI只是一场泡沫,他只是通过概率在做词语接龙的游戏,这样的理论基础不可能达到AGI的程度。你来评价我的观点。

AI就会根据我的观点,和我讨论AI到底是泡沫还是技术革命。讨论的过程中,我就可以进一步深度思考这个观点有哪些需要优化,有哪些漏洞。

这个技巧还可以应用与学习,例如提示词是:

我认为面向对象的程序设计提升了编程的复杂度,编程新手不适合从面向对象编程语言开始入门。你来评价我的观点。

AI会对此进行评价。

Read More

提示词的五个要素

与AI对话,编写高质量的提示词,才更容易拿到我们想要的结果,提示词可以分为五个组成部分,分别是

  1. 指令要求
  2. 背景信息
  3. 数据与样本
  4. 输出要求
  5. 设定角色

下面通过一些具体的示例,讲解如何一步步优化提示词。

1. 指令要求

第一个要素是写清楚给AI指令要求,或者说是问一个明确的问题。

比如和AI说

给我提供一个西红柿炒鸡蛋的做法

这就是一个最简单的指令要求。AI会根据要求,回复西红柿炒鸡蛋的具体做法。

但是,如果只说一个简单的要求,西红柿炒鸡蛋的做法不一定适合咱们自己,比如对盐和糖要求多少,西红柿去不去皮等等,这部分要求,AI就随机展示了。所以需要进一步描述背景。

2. 背景信息

我们可以给AI提供一个做这道菜的背景,提示词可以是:

我家老人要吃西红柿炒鸡蛋,给我提供一个西红柿炒鸡蛋的做法。

这样AI就会针对这个背景,来回答,比如AI会考虑,老人比较喜欢清淡的口味,菜品口感要更软嫩,等等,都会作为AI输出菜谱的参考条件,这样AI生成的回答就更有针对性了。

Read More

什么是智能体

1. 大模型的局限性

上一节我们了解了什么是大模型,根据大模型的原理我们知道,大模型是有局限性的,下面列举了三点:

没有记忆

与大模型每次对话,它只知道当前对话内容,不会对过往的对话历史进行保存。

无法自主回复

大模型必须有”人”主动发消息,它才会进行回复。

无法获取外界信息

大模型只能根据训练数据回答问题,训练数据以外,例如训练之后发生的事儿,一概不知。例如天气,时间,最近发生的新闻,大模型是没有任何概念的。

Read More

什么是大模型

我们现在使用的AI产品,包括聊天机器人,或是智能体,都是基于大模型开发的,大模型就是这些AI应用的大脑。

本节主要讲解以下两部分内容:

  1. 大模型如何理解人类语言
  2. 大模型如何做出回复
  3. 大模型真的能理解人类语言吗

1. 大模型如何理解人类语言

通过一个例子,可以更直观地了解大模型如何理解人类语言。

比如给某个大模型发送一句话

1
“我喜欢吃苹果”

大模型要“理解”这句话,首先会将这句话进行拆分:比如它可能拆分成四个部分。

1
我,喜欢,吃,苹果

说明:不同的大模型会有不同的拆分方法,这里说的四部分是为了方便理解。

拆分的每个部分,就是大模型理解人类语言的最小单元,这个最小单元就叫做token。这个拆分的过程,叫做”分词Tokenization”。

分词结束后,还需要将每一个token,转换成向量数据。就像下面这样:

1
2
3
4
"我" → [0.1, 0.2, 0.3, ..., 0.8] 
"喜欢" → [0.2, 0.3, 0.4, ..., 0.9]
"吃" → [0.3, 0.4, 0.5, ..., 0.7]
"苹果" → [0.4, 0.5, 0.6, ..., 0.6]

Read More