在驱动云 VirtAI Cloud 上部署 ChatGLM3

本文记录在驱动云 VirtAI Cloud 上部署 ChatGLM3 遇到的一些问题。

如何用免费 GPU 显示跑AI项目

核心的部署步骤见教程 如何用免费 GPU 显示跑AI项目,主要包含了:

接下来是使用过程中遇到的问题。

Unable to locate package unzip

使用如下命令按照 unzip:

apt-get update && apt-get install unzip

终端提示: “Unable to locate package unzip”。 网上通常的解决方式是先 update,再 install。可这里已经先 update了,正当没有头绪之时,测试了下 unzip 命令居然已经存在了。 于是忽略该错误提示了......

pip Invalid requirement: ‘pip\u200b’

升级pip的时候,提示该错误。遇到这个问题,一般可以先换个源试一下,即使教程中已经换过了源。
这里我使用了 douban 的源:

python3 -m pip install --upgrade pip -i https://pypi.douban.com/simple 

此外,驱动云也提供了自己的源,用于开发:https://pypi.virtaicloud.com/repository/pypi/simple,详情可见:pip&apt安装加速

git clone 404

我一直以为云上clone和本地的网络无关,但在驱动云上的实践来看,似乎并不正确。因为文章中用的是 github 地址,而因为某个周知的原因,本地 clone 的时候经常会 404。解决此问题的方法有很多,其中之一就是在 gitee上找 ChatGLM3。

No matching distribution found for transformer

项目中 requiremens 中依赖 transformer。该错误很明显表明 transformer 安装失败,解决方法依旧是换一个源试试。

ChatGLM3 简介

以下介绍来自一言3.5版本:
ChatGLM3 是智谱AI推出的全新大模型,基于 Transformer 架构的聊天机器人模型,具有自然流畅的对话能力。其技术特点包括知识蒸馏、多任务学习和强化学习等。该模型在多模态理解能力、代码生成和执行能力以及网络搜索增强方面取得了显著进展。此外,ChatGLM3还集成了自研的AgentTuning技术,提升了模型智能体能力。新推出的端测模型可在手机和车载平台上部署,甚至支持移动平台上CPU芯片的推理,速度快达20tokens/s。与其他开源实现相比,ChatGLM3的推理速度提升了2-3倍,推理成本降低了一倍。ChatGLM3的推出将为各种复杂场景提供更好的解决方案。

以下来自官方的简介:
ChatGLM3 是智谱 AI 和清华大学 KEG 实验室联合发布的新一代对话预训练模型。ChatGLM3-6B 是 ChatGLM3 系列中的开源模型,在保留了前两代模型对话流畅、部署门槛低等众多优秀特性的基础上,ChatGLM3-6B 引入了如下特性:

  1. 更强大的基础模型: ChatGLM3-6B 的基础模型 ChatGLM3-6B-Base 采用了更多样的训练数据、更充分的训练步数和更合理的训练策略。在语义、数学、推理、代码、知识等不同角度的数据集上测评显示,ChatGLM3-6B-Base 具有在 10B 以下的基础模型中最强的性能。
  2. 更完整的功能支持: ChatGLM3-6B 采用了全新设计的 Prompt 格式,除正常的多轮对话外。同时原生支持工具调用(Function Call)、代码执行(Code Interpreter)和 Agent 任务等复杂场景。
  3. 更全面的开源序列: 除了对话模型 ChatGLM3-6B 外,还开源了基础模型 ChatGLM3-6B-Base、长文本对话模型 ChatGLM3-6B-32K。以上所有权重对学术研究完全开放,在填写问卷进行登记后亦允许免费商业使用。

ChatGLM3 项目库中有web_demo.py 和 web_demo2.py;前者是基于 Gradio 框架,后者是基于 Streamlit 框架。
下面我们使用 ChatGLM, 看下两个框架是什么,有什么异同。

Gradio

Gradio 是一款基于 Python 的 AI 开发工具,旨在简化机器学习模型的部署和应用。它通过可视化界面和简单易用的 API,帮助开发者快速构建 AI 驱动的应用。Gradio 的特点包括:

  1. 无需编程经验:Gradio 支持拖拽式界面设计,使非技术人员也能轻松创建 AI 应用。
  2. 丰富的组件库:Gradio 提供了丰富的组件库,包括文本、图像、音频等,以满足多种场景的需求。
  3. 模型兼容性:Gradio 支持多种流行的深度学习框架,如 TensorFlow、PyTorch 等。
  4. 灵活的部署:Gradio 支持在本地服务器、云端服务器等多种环境中部署 AI 应用。
  5. 易于集成:Gradio 提供了简单易用的 API,可方便地与其他应用程序和框架集成。

总之,Gradio 是一款功能强大且易于使用的 AI 开发工具,可帮助开发者快速构建和部署 AI 驱动的应用。

Streamlit

注意,在同一个对话下,先咨询了 Gradio 得到上面的回答后,再让 ChatGLM 按同样的方式回答介绍 Streamlit,给出了如下回答。
似乎说明 ChatGLM 上下文的语境理解能力并没有那么强。

Streamlit 是一款开放源代码的 Python 库,用于轻松创建和共享数据应用。它允许用户在纯 Python 环境中将数据脚本转换为可分享的 Web 应用程序,无需前端经验。Streamlit 建立在三个简单原则之上:滑块、日期选择器、上传文件、单选按钮、图表和日期选择器等组件,使得用户可以快速构建个性化的应用程序界面。
Streamlit 支持常见的数据可视化库,如 matplotlib、seaborn 等,用于可视化数据。此外,它还提供了一系列有趣的小部件和组件,如 aiorbits,帮助用户更好地构建应用程序。Streamlit 兼容几乎所有主流数据可视化、数据处理、图像处理和机器学习框架。
每当页面被触发回调时,Python 程序会从上至下重新运行一遍,由于脚本运行速度极快,用户不必担心代码的运行速度问题。Streamlit 还具有缓存功能,可以优化应用程序的性能。
总之,Streamlit 是一个强大且易于使用的 Python 库,适用于创建和共享数据应用,使得用户能够快速构建美观且实用的 Web 应用程序。

当使用了和问 Gradio 一样的提示词后,才给出了如下格式的回答:

Streamlit 是一款轻量级 Python 库,用于构建易于分享的数据分析和可视化应用。它具有以下特点:

  1. 简化数据应用开发:Streamlit 允许用户在 Python 环境中快速构建 Web 应用程序,无需前端技能。
  2. 丰富的组件库:Streamlit 提供了多种组件,如数据可视化、交互式控件等,便于创建个性化应用。
  3. 支持数据可视化库:Streamlit 兼容 matplotlib、seaborn 等常见数据可视化库,助力用户轻松实现数据可视化。
  4. 异步处理:Streamlit 采用异步 Python 调用,提高应用程序性能,避免阻塞。
  5. 云端部署:Streamlit 支持一键部署到云端,便于分享和展示应用。
    总之,Streamlit 是一个易于使用、功能丰富的 Python 库,助力用户快速构建数据分析和可视化应用。

Gradio VS Streamlit

Gradio 和 Streamlit 都是 Python 库,用于创建和部署数据应用和 Web 应用程序。以下是它们之间的异同:
异同点:

  1. 目的:两者都旨在简化数据应用和 Web 应用程序的开发,使数据分析和可视化更加便捷。
  2. 易于使用:两者都提供了丰富的组件库,使得用户可以快速构建应用程序,无需前端经验。
  3. 兼容性:Gradio 和 Streamlit 都支持多种流行的数据处理、可视化和机器学习框架。

不同点:

  1. 应用领域:Gradio 主要关注 AI 应用的开发,尤其是机器学习模型的部署和集成;而 Streamlit 适用于更广泛的领域,包括数据可视化、处理和分析。
  2. 界面设计:Gradio 提供了一个可视化界面,用户可以通过拖拽组件来构建应用程序;Streamlit 则需要用户编写 Python 代码来构建界面,但它提供了丰富的组件库,方便用户实现各种功能。
  3. 运行机制:Gradio 在运行时会重新执行 Python 脚本,而 Streamlit 则通过异步调用 Python 脚本来提高性能。
  4. 缓存功能:Streamlit 具有缓存功能,可以优化应用程序的性能,而 Gradio 暂未提供类似功能。
  5. 部署方式:Gradio 支持在本地服务器、云端服务器等多种环境中部署 AI 应用;Streamlit 则主要关注云端部署,并提供了一键部署功能。

总之,Gradio 和 Streamlit 各有特点,根据项目需求和个人喜好选择合适的库来进行开发。如果项目主要涉及 AI 应用,Gradio 是一个不错的选择;而对于更广泛的 data-driven 应用,Streamlit 可能更适合。

Comments