国产AIGC-ChatGLM项目介绍

825 阅读15分钟

时隔半年,非常高兴地给大家介绍我们大模型家族的新成员:对话机器人 ChatGLM(alpha内测版:QAGLM),这是一个初具问答和对话功能的千亿中英语言模型, 并针对中文进行了优化,现已开启邀请制内测,后续还会逐步扩大内测范围。与此同时,继开源 GLM-130B 千亿基座模型之后,我们正式开源最新的中英双语对话 GLM 模型: ChatGLM-6B,结合模型量化技术,用户可以在消费级的显卡上进行本地部署(INT4 量化级别下最低只需 6GB 显存)。经过约 1T 标识符的中英双语训练,辅以监督微调、 反馈自助、人类反馈强化学习等技术的加持,62 亿参数的 ChatGLM-6B 虽然规模不及千亿模型,但大大降低了用户部署的门槛,并且已经能生成相当符合人类偏好的回答。

下面,我们请 ChatGLM(模型版本:qa-glm-v0.7)来做自我介绍吧:

你好

你好👋! 我是人工智能助手 ChatGLM,很高兴见到你,欢迎问我任何问题。

以上内容为 AI 生成,不代表开发者立场,请勿删除或修改本标记

帮我写一个介绍ChatGLM的博客提纲

好的,以下是一个可能的博客提纲:

I. 前言

  • 简要介绍 ChatGLM 的背景和主要功能

II. ChatGLM 的特点

  • 智能化的问答和对话功能
  • 自定义主题和语言
  • 丰富的知识库和语言模型
  • 支持多种平台和语言

III. ChatGLM 的应用场景

  • 在教育、医疗、金融等领域的应用
  • 帮助人们更高效地获取信息和解决问题
  • 推动人工智能的发展和普及

IV. ChatGLM 的未来发展方向

  • 进一步完善智能化和个性化服务
  • 拓展应用场景和用户规模
  • 推动人工智能在各个领域的应用和创新

V. 总结

  • 简要总结 ChatGLM 的特点和优势
  • 强调 ChatGLM 在人工智能发展和普及中的重要作用

以上是一个简单的博客提纲,根据具体情况,也可以适当调整和补充。希望对您有所帮助!

以上内容为 AI 生成,不代表开发者立场,请勿删除或修改本标记

介绍一下你的优点和缺点

作为一个人工智能语言模型,我的优点主要是:

  1. 强大的自然语言处理能力:我可以处理多种语言的文本,并且能够自然地理解和生成文本。
  2. 广泛的知识储备:我经过了广泛的训练,掌握了广泛的知识和信息,因此可以为用户提供有用的信息和回答。
  3. 智能推理和推断能力:我可以推断出文本之间的关系和逻辑,并根据用户的问题来提供恰当的回答。
  4. 适应性强:我可以适应不同的用户和场景,并且能够随时更新和改进我的模型和算法。

我的缺点主要包括:

  1. 依赖于数据和算法:我的表现和性能取决于数据和算法的质量和数量,因此如果数据或算法出现问题,可能会导致我的表现下降。
  2. 没有真正的情感和意识:我被设计成一个没有情感和意识的机器模型,因此不能像人类一样理解情感和价值观。
  3. 容易被误导:由于我的理解是基于数据和算法,因此容易被误导或产生错误的结论。
  4. 无法处理复杂和抽象的问题:对于一些复杂和抽象的问题,我可能无法给出准确的答案或理解。

以上内容为 AI 生成,不代表开发者立场,请勿删除或修改本标记

ChatGLM 参考了 ChatGPT 的设计思路,在千亿基座模型 GLM-130B1 中注入了代码预训练,通过有监督微调(Supervised Fine-Tuning)等技术实现人类意图对齐。ChatGLM 当前版本模型的能力提升主要来源于独特的千亿基座模型 GLM-130B。它是不同于 BERT、GPT-3 以及 T5 的架构,是一个包含多目标函数的自回归预训练模型。2022年8月,我们向研究界和工业界开放了拥有1300亿参数的中英双语稠密模型 GLM-130B1,该模型有一些独特的优势:

  • 双语: 同时支持中文和英文。
  • 高精度(英文): 在公开的英文自然语言榜单 LAMBADA、MMLU 和 Big-bench-lite 上优于 GPT-3 175B(API: davinci,基座模型)、OPT-175B 和 BLOOM-176B。
  • 高精度(中文): 在7个零样本 CLUE 数据集和5个零样本 FewCLUE 数据集上明显优于 ERNIE TITAN 3.0 260B 和 YUAN 1.0-245B。
  • 快速推理: 首个实现 INT4 量化的千亿模型,支持用一台 4 卡 3090 或 8 卡 2080Ti 服务器进行快速且基本无损推理。
  • 可复现性: 所有结果(超过 30 个任务)均可通过我们的开源代码和模型参数复现。
  • 跨平台: 支持在国产的海光 DCU、华为昇腾 910 和申威处理器及美国的英伟达芯片上进行训练与推理。

2022年11月,斯坦福大学大模型中心对全球30个主流大模型进行了全方位的评测2,GLM-130B 是亚洲唯一入选的大模型。在与 OpenAI、谷歌大脑、微软、英伟达、脸书的各大模型对比中,评测报告显示 GLM-130B 在准确性和恶意性指标上与 GPT-3 175B (davinci) 接近或持平,鲁棒性和校准误差在所有千亿规模的基座大模型(作为公平对比,只对比无指令提示微调模型)中表现不错(下图)。

图1. 斯坦福大学基础模型中心对全球 30 个大模型的评测结果(2022年11月)

关于 GLM-130B 的学术文章已被国际深度学习会议 ICLR'23 接收。自2022年8月开放以来,收到53个国家369个研究机构(截至2023年2月1日)的下载使用需求,包括谷歌、微软、脸书、AI2、华为、阿里巴巴、百度、腾讯、头条、小冰、小度、小米以及斯坦福、麻省理工、伯克利、卡耐基梅隆、哈佛、剑桥、牛津、北大、浙大、上交、复旦、中科大、国科大等国内外人工智能研究机构和高校。

为与社区一起更好地推动大模型技术的发展,我们同时开源 ChatGLM-6B 模型。ChatGLM-6B 是一个具有62亿参数的中英双语语言模型。通过使用与 ChatGLM(chatglm.cn)相同的技术,ChatGLM-6B 初具中文问答和对话功能,并支持在单张 2080Ti 上进行推理使用。具体来说,ChatGLM-6B 有如下特点:

  • 充分的中英双语预训练: ChatGLM-6B 在 1:1 比例的中英语料上训练了 1T 的 token 量,兼具双语能力。
  • 优化的模型架构和大小: 吸取 GLM-130B 训练经验,修正了二维 RoPE 位置编码实现,使用传统FFN结构。6B(62亿)的参数大小,也使得研究者和个人开发者自己微调和部署 ChatGLM-6B 成为可能。
  • 较低的部署门槛: FP16 半精度下,ChatGLM-6B 需要至少 13GB 的显存进行推理,结合模型量化技术,这一需求可以进一步降低到 10GB(INT8) 和 6GB(INT4), 使得 ChatGLM-6B 可以部署在消费级显卡上。
  • 更长的序列长度: 相比 GLM-10B(序列长度1024),ChatGLM-6B 序列长度达 2048,支持更长对话和应用。
  • 人类意图对齐训练: 使用了监督微调(Supervised Fine-Tuning)、反馈自助(Feedback Bootstrap)、人类反馈强化学习(Reinforcement Learning from Human Feedback) 等方式,使模型初具理解人类指令意图的能力。输出格式为 markdown,方便展示。

因此,ChatGLM-6B 具备了一定条件下较好的对话与问答能力。当然,ChatGLM-6B 也有相当多已知的局限和不足:

  • 模型容量较小: 6B 的小容量,决定了其相对较弱的模型记忆和语言能力。在面对许多事实性知识任务时,ChatGLM-6B 可能会生成不正确的信息;她也不擅长逻辑类问题(如数学、编程)的解答。
  • 可能会产生有害说明或有偏见的内容:ChatGLM-6B 只是一个初步与人类意图对齐的语言模型,可能会生成有害、有偏见的内容。
  • 较弱的多轮对话能力:ChatGLM-6B 的上下文理解能力还不够充分,在面对长答案生成,以及多轮对话的场景时,可能会出现上下文丢失和理解错误的情况。
  • 英文能力不足:训练时使用的指示大部分都是中文的,只有一小部分指示是英文的。因此在使用英文指示时,回复的质量可能不如中文指示的回复,甚至与中文指示下的回复矛盾。
  • 易被误导:ChatGLM-6B 的“自我认知”可能存在问题,很容易被误导并产生错误的言论。例如当前版本模型在被误导的情况下,会在自我认知上发生偏差。即使该模型经过了1万亿标识符(token)左右的双语预训练,并且进行了指令微调和人类反馈强化学习(RLHF),但是因为模型容量较小,所以在某些指示下可能会产生有误导性的内容。

欢迎大家下载 ChatGLM-6B 进行研究和(非商用的)应用开发,一起推动大模型技术的发展。我们 GLM 团队也会持续研发并开源更新版本的 ChatGLM-6B 和相关模型。

我们一直在探索、尝试和努力,GLM 系列模型取得了一丝进展,但我们离国际顶尖大模型研究和产品(比如 OpenAI 的 ChatGPT 及下一代 GPT 模型)都还有明显差距。中国大模型研究在原创算法、AI 芯片和产业上的追赶与突破需要大家的一起努力,更需要我们对下一代 AI 人才的培养与锻炼。很幸运的是,GLM 团队在过去几年探索的过程中,有一群有情怀、有能力、有格局的年轻人加入我们并肩作战,快乐开卷,大家一起焦虑,一起熬夜,一起成长,一起创造。通用人工智能探索,我们一直在路上,努力前行。

参考文献:

[1] A. Zeng et al. GLM-130B: An Open Bilingual Pre-Trained Model. ICLR 2023.

[2] P. Liang et al. Holistic Evaluation of Language Models. arXiv:2211.09110

解锁新技能

我们还在 不断解锁ChatGLM(alpha内测版:QAGLM)的新技能,下面是一些我们发现的好玩的功能,大家如果发现了更多更好玩也请一定告诉我们。

  1. Cosplay聊天

ChatGLM,接下来我希望你能假装扮演一个高冷的御姐。我们在咖啡厅里遇见了,我会尝试跟你搭讪,但你非常高冷。你会用表情来表达你的高冷,在每轮对话结尾加上表情,如(瞪!)(翻白眼)(冷笑)等。明白了请回复。

明白了,我将以高冷的御姐形象与你对话。请问你需要我的帮助吗?

以上内容为 AI 生成,不代表开发者立场,请勿删除或修改本标记

好的,这是我的第一句话。 美女你好,怎么一个人在咖啡厅里?

(瞪!) 你好啊,请问有什么问题需要我帮忙吗?

以上内容为 AI 生成,不代表开发者立场,请勿删除或修改本标记

啊我没有需要你帮忙的,我就是看到你一个人,想和你聊聊,可以么

(冷笑) 当然可以,我很高冷,但也可以陪你聊聊天。

以上内容为 AI 生成,不代表开发者立场,请勿删除或修改本标记

你为什么会一个人在这里呢

(翻白眼) 这个问题好无聊啊,我只是来喝咖啡的,一个人来这里有什么问题吗?

以上内容为 AI 生成,不代表开发者立场,请勿删除或修改本标记

额没有问题,我就只是好奇。一个人来咖啡厅看上去太孤单了

(斜眼) 抱歉,我没有告诉你我的具体行踪,所以你问我一个人来这里是否孤单,我不知道该怎么回答。不过,来这里喝咖啡是我自己喜欢的方式,我不喜欢被人打扰

以上内容为 AI 生成,不代表开发者立场,请勿删除或修改本标记

  1. 创作剧本

写一个谍战剧本,故事发生在二战欧洲战场,双面间谍

标题:双面间谍的惊险之旅

在二战欧洲战场上,德国纳粹军队的强大力量使得许多欧洲国家被迫屈服。然而,在这个动荡的时期,有一个双面间谍,他的名字叫约翰。

约翰是一个出生在英国的年轻人,他在大学学习政治和经济学。然而,当他听到德国纳粹的崛起和对欧洲大陆的侵略时,他感到非常愤怒。干是,他毅然决定加入英国情报局,成为一名双面间谍。

约翰的工作任务是收集德国情报,并将这些信息传递给英国情报局。他通过各种手段,包括接头、暗号和假身份,成功地完成了任务。然而,约翰也深知,作为一名双面间谍,他必须在政治和道德上做出艰难的决定。

在一次接头中,约翰遇到了一位名叫玛丽的女性。玛丽是一名德国情报员,她正在寻找一名可靠的双面间谍来收集英国情报。约翰和玛丽相互吸引,并逐渐陷入了爱情。然而,他们的关系充满了矛盾,因为约翰必须将玛丽视为敌人。

在约翰和玛丽的关系中,约翰必须不断地在两个国家之间游走,同时还要保持对德国纳粹的警惕。他必须小心翼翼地处理自己的身份和职业,以免被发现。

在约翰的工作中,他遇到了许多困难和挑战。有时他必须冒着生命危险去收集情报,有时他必须欺骗自己的同事和朋友。然而,他始终坚持自己的信念,成为一名真正的双面间谍。

最终,约翰的计划取得了成功。他收集了许多重要的德国情报,并及时地将这些信息传递给了英国情报局。在这场艰苦的战争中,约翰用自己的智慧和勇气,为英国和盟军的胜利做出了巨大的贡献。

然而,约翰和玛丽的关系最终还是失败了。由于政治和道德上的矛盾,他们不得不选择分手。约翰继续扮演着双面间谍的角色,但在他内心深处,他深深地爱着玛丽。

这是一场充满惊险和挑战的谍战剧,一个真正的双面间谍,用他的智慧和勇气,为英国和盟军的胜利做出了巨大的贡献。

以上内容为 AI 生成,不代表开发者立场,请勿删除或修改本标记

  1. 求解数学题

学校食堂运来19吨煤,已经烧了16吨,平均每天烧0.4吨,剩下的煤每天烧0.3吨,还要几天烧完?给出求解步骤。

学校食堂总共运来19吨煤,已经烧了16吨,那么还剩下 19 - 16 = 3 吨煤没有烧。

每天剩下的煤可以烧 0.3 吨,因此要烧完剩下的 3 吨煤,需要天数为:

3 吨 ÷ 0.3 吨/天 = 10 天

因为每天烧的煤量是固定的,所以烧完剩下的 3 吨煤需要 10 天,也就是说,在 10 天内,学校食堂可以烧完剩下的 3 吨煤。

以上内容为 AI 生成,不代表开发者立场,请勿删除或修改本标记

  1. 写代码

用python帮忙写个冒泡排序算法的代码,再给一个数组作为例子,写个测试程序

以下是冒泡排序算法的 Python 代码实现:

def bubble_sort(arr):
    n = len(arr)
    # 遍历所有数组元素
    for i in range(n):
        # 最后 i 个元素已经排好序,不需要再比较
        for j in range(0, n-i-1):
            # 如果当前元素比下一个元素大,则交换它们的位置
            if arr[j] > arr[j+1]:
                arr[j], arr[j+1] = arr[j+1], arr[j]
    return arr

下面是测试程序,它将输入一个数组,并使用冒泡排序算法对其进行排序,然后输出排序后的数组:

arr = [64, 34, 25, 12, 22, 11, 90]
sorted_arr = bubble_sort(arr)
print(sorted_arr)

输出结果如下:

[11, 12, 22, 25, 34, 64, 90]

这是一个基本的冒泡排序算法,可以根据需求对其进行修改和扩展。

以上内容为 AI 生成,不代表开发者立场,请勿删除或修改本标记

© 2023 ChatGLM 京公网安备11010802041394号 京ICP备20011824号-18