零基础,零成本,部署一个属于你的大模型

前言

看了那么多chatGPT的文章,作为一名不精通算法的开发,也对大模型心痒痒。但想要部署自己的大模型,且不说没有算法相关的经验了,光是大模型占用的算力资源,手头的个人电脑其实也很难独立部署。就算使用算法压缩后的大模型,部署在个人电脑上,还要忍受极端缓慢的计算速度以及与chatGPT相差甚远的模型效果。

有什么办法能够部署属于我们自己的大模型呢?其实很简单,我们将目标拆解一下:

  • 有编程基础:作为一个合格的程序员,这应该是必备素质。
  • 有足够的算力资源:专业GPU自己买不起怎么办,阿里云最近推出了”飞天“免费试用计划,AI模型训练,GPU资源免费用!
  • 要懂大模型:真的要精通大模型吗?不需要。如果只是简单的模型部署和使用,现在的开源模型部署已经非常简单化,只需要掌握基础的Python知识就可以。

随着chatGPT的火爆,许多开源爱好者涌入AI领域,将许多与大型模型相关的工具进行进一步封装,使得我们这些AI初学者也能够用很少的工作量搭建一个私有大型语言模型。而且,有许多成熟的工具可供我们使用,可以帮助我们进一步使用和微调大型模型。

因此,本文是为AI初学者们(包括我自己)编写的保姆级大型模型部署和使用指南。现在正值阿里云免费试用计划,我们可以不花一分钱就可以体验部署自己的大型模型的乐趣。

下图便是我通过阿里云免费申请的PAI平台资源(显卡是Nvidia V100),部署的清华大学chatGLM对话大模型,在网页端和手机端都能直接体验:

电脑端

手机端

下文围绕如何手把手搭建一个大模型Demo展开,文章主要目录:

  • 领取阿里云免费使用资源
  • 创建并使用PAI平台实例
  • 部署清华ChatGLM大模型
  • 加餐:免费额度用量查询
  • 总结和展望

领取阿里云免费使用资源

免费试用活动页

https://free.aliyun.com/

只要没有申请过PAI-DSW资源的新老用户皆可申请5000CU的免费额度,3个月内使用。

至于5000CU能用多久,和实际申请实例的性能相关,在下面会讲解。

创建并使用PAI平台实例

官方有PAI-DSW使用教程,教你如何用领取的免费资源搭建一个Stable Diffusion来做AI画图,如果对SD感兴趣,可以按照官方教程实践。

https://help.aliyun.com/document_detail/615220.html

我们领取额度后,秒到账。之后在阿里云页面内搜索PAI平台,点击立即开通,开通PAI控制台。

开通时的页面没有截图,其中有一些可选的开通项,比如NAS,比如网关等,可以按照自己需求选取,比如希望保存自己的模型,那可以关联NAS资源。我当时没有选其他资源,仅开通了PAI,这样没有额外的收费。

随后进入控制台,创建DSW实例。

这里选取资源,注意选择GPU资源,并选择支持资源包抵扣的资源。比如下图的ecs.gn6v-c8g1.2xlarg。可以看到他们的价格里,写明了每小时消耗的CU,你可以大致计算一下,5000CU可以用多久,ecs.gn6v-c8g1.2xlarg这个型号可以跑333小时,大概连续13天。

系统可以任意选择,本文为了部署chatGLM,选择pytorch1.12

当然,中间你可以随时停止机器,就不会继续扣费。注意,这里的机器,是只有系统盘的,如果停止了机器,挂载的系统盘会被回收,你在上面下载的各种文件,模型,都会回收掉。你重新启动,是新的系统盘,文件需要重新下载。(别问我怎么知道的- -!)

创建完成后,点击打开,就进入了交互式的Web页面,可以开始你的模型开发之旅。

部署清华ChatGLM大模型

上面已经讲完了资源的申请和实例的创建、使用,之后小伙伴们可以自行发挥,部署自己的大模型(或者任何AI相关资源)。本文后半部分介绍一下我自己折腾部署ChatGLM对话大模型的过程,给完全不了解大模型的小伙伴打个样。

ChatGLM代码仓库:

https://github.com/THUDM/ChatGLM-6B

大家完全可以按照官方文档自行部署,忽略我下面的教程。也可以按照我下方的流程来操作,避免再把我踩得坑再踩一遍。

下载模型

由于模型较大(13G左右),我们最好先把模型拉到本地,再运行。

当然,如果你也可以不下载离线模型,直接在运行时拉取模型文件。

模型文件仓库:

https://huggingface.co/THUDM/chatglm-6b

下载模型仓库,需要安装Git LFS(Large File Storage),它用来拉去Git仓库中的大型文件,比如这次用到的模型bin文件。

由于我们申请的系统正好是Ubuntu,在Ubuntu下安装Git LFS,可以使用如下命令:

sudo apt-get update

sudo apt-get install git-lfs

完成后,克隆模型仓库:

git clone https://huggingface.co/THUDM/chatglm-6b

有可能网络波动,会导致拉取卡住,可以手动停止掉,然后进入文件夹内:

git lfs pull

这样会拉取到上图红框中LFS文件。

部署模型

完成模型下载后,我们下载模型运行代码:

git clone https://github.com/THUDM/ChatGLM-6B.git

进入文件夹,创建python的虚拟环境:

virtualenv -p /usr/bin/python3.8 venv

激活Python虚拟环境:

source venv/bin/activate

如果遇到如下的报错,需要额外安装一下python3-dev:

Could not build wheels for pycocotools, which is required to install pyproject.toml-based projects

error: command ‘/usr/bin/x86_64-linux-gnu-gcc’ failed with exit code 1

sudo apt-get install python3-dev

由于我们本地提前下载好了模型,我们修改一下代码,使用本地模型的路径。

将使用到的代码中,路径都从THUDM/chatglm-6b改为你的路径,比如我们的模型下载在/mnt/workspace/chatglm-6b,我们将两种部署模型的主代码文件都修改一下,都修改为如下图所示的路径:

  • cli_demo.py: 命令行交互界面
  • web_demo.py:Web图形交互界面

我们直接用官方提供的网页版Demo来跑模型,启动web_demo.py,开始模型部署,首先会将模型读入内存,占用约13个G。

完成后,内存会被释放,开始占用GPU显存13g。

最终,部署完成会得到服务公网和本地网址。

对话效果展示

回答还是比较快的,在我们V100显卡的机器上,提问后1-2秒内就会开始回答问题。

以下是一个完整的对话:

我:写一个Java单例模式代码

ChatGLM:以下是一个简单的Java单例模式代码示例:

public class Singleton {private static final Singleton INSTANCE = new Singleton();private Singleton() {}public static Singleton getInstance() {return INSTANCE;}
}

在这个示例中,Singleton 类是一个静态类,它有一个静态成员变量 INSTANCE,它初始化为一个单例对象。getInstance 方法返回这个单例对象的实例,可以像任何其他方法一样使用。
单例对象通常被用于确保一个类只有一个实例,并提供全局访问点。使用 getInstance 方法可以方便地获取单例对象,而无需担心多个线程同时访问同一个对象。
需要注意的是,在实际应用中,单例对象应该尽量避免被频繁创建和销毁,因为这样会增加内存开销和维护成本。因此,可以考虑使用懒加载(lazy loading)的方式来避免频繁创建单例对象。

我:可以换一个方式实现吗,比如懒汉式?

ChatGLM:当然可以,懒汉式单例模式的具体实现方式如下:

  1. 将 Singleton 类做成一个接口。
  2. 实现 Singleton 接口的类可以是多个,但它们都应该使用 getInstance 方法来获取单例对象,并返回一个指向该对象的引用。
  3. 实现 Singleton 接口的类中,可以有一个内部类来负责创建单例对象。
  4. 内部类应该实现 static 关键字,并使用 synchronized 关键字实现线程安全。
  5. 内部类应该覆盖 getInstance 方法,以实现懒加载。例如,可以创建一个静态变量来存储单例对象,并在需要时才创建该变量。
  6. 在需要使用单例对象的地方,可以调用内部类的方法,来获取单例对象。
    以下是一个懒汉式单例模式的示例代码:
public interface Singleton {static Singleton INSTANCE;
}
public class ConcreteSingleton implements Singleton {private static Singleton INSTANCE = new ConcreteSingleton();@Overridepublic Singleton getInstance() {return INSTANCE;}
}
public class LazySingleton implements Singleton {private static Singleton INSTANCE;private Singleton() {}public static Singleton getInstance() {synchronized (LazySingleton.class) {return INSTANCE;}}
}

在这个示例中,ConcreteSingleton 类使用 getInstance 方法来创建单例对象,并使用 synchronized 关键字实现线程安全。LazySingleton 类使用 synchronized 关键字实现懒加载,只有在需要时才创建单例对象。
需要注意的是,懒汉式单例模式仍然需要保证线程安全,因此在使用懒加载时,需要考虑线程安全问题。此外,懒汉式单例模式可能无法充分利用类的空间,因为它需要使用共享对象来实现懒加载,因此需要考虑如何提高类的性能和空间利用率。

查看免费额度使用量

免费的5000CU额度是有三个月时效的,超过三个月会直接过期。想要做到心中有数,防止超过免费额度导致扣费。我们可以查看免费额度的用量。在页面右上角有“费用”标签,选择“资源实例管理”,点击“资源包”,能看到你的免费资源包的用量。

点击每行中的统计,可以看到是哪个实例在消耗CU。

总结

整个部署流程,我自己折腾下来也只花了半天时间,就能够搭建好一个完整、可用的Demo。

不得不说,当AI逐渐破圈,成为一个风口时,真的是猪都会飞,普通程序员上手AI的难度瞬间被拉低了一个数量级。开源开发者的不断贡献让各种工具和文档变得更容易上手。每天数以万计的大模型相关issue和pr,让Github遇到了久违的繁荣。

在AI席卷全球的这一刻,作为一名程序员,我们无疑是对这个时代更有体感的那群人。此时此刻,非我莫属。要充分关注AI技术的应用场景和发展趋势,积极探索AI与其他领域的结合,为自己的职业发展和未来规划提供更多的可能性。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/11283.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Metabase可视化BI系统部署安装及简单使用

metabase 是国外开源的一个可视化系统,语言使用了Clojure TypeScript。 Clojure(/ˈkloʊʒər/)是Lisp程式語言在Java平台上的現代、動態及函數式方言。来自维基百科。 我也是第一次看到这个语言,知道它是可以运行在Java环境上的…

常用ChatGPT类模型的总结

做一个现在常用ChatGPT类模型的总结,后续会持续更新,大家如果有新的可以在评论里说 一、商用的(不开源)的: ChatGPT: https://chat.openai.com/ Claude: 可以参考我的这篇文章,北方的郎:Ant…

最新类ChatPDF及AutoGPT开源18大功能平台——闻达手把手超详细环境部署与安装——如何在低显存单显卡上面安装私有ChatGPT GPT-4大语言模型LLM调用平台

目录 前言闻达框架简介前期准备电脑要求安装anaconda安装相应版本的CUDA配置ChatGLM-6B Conda环境安装pytorch 类ChatPDF及AutoGPT开源模型——闻达环境部署及安装相关代码及模型下载解压模型到指定地址配置文件修改根据使用的不同模型,安装相关库运行体验运行chatG…

浅析ChatGPT:历史沿革、应用现状及前景展望

关注公众号,发现CV技术之美 浅析ChatGPT:历史沿革、应用现状及前景展望 刘禹良1,白翔1,金连文2 1华中科技大学人工智能与自动化学院 2华南理工大学电子与信息学院 人工智能已成为新一代信息时代的核心技术,广泛应用于多…

图灵奖得主、AI 教父、神经网络大师——谷歌副总裁 Hinton 离职——称其对毕生工作感到后悔和恐惧

图灵奖得主、AI 教父、神经网络大师——谷歌副总裁 Hinton 离职——称其对毕生工作感到后悔和恐惧 目录

谁是近期全世界最受瞩目的聊天对象?

在今天,答案有且仅有一个,那就是ChatGPT。 Chat GPT——可能很多人被这个冗长的名字搞糊涂了。说实话,我第一眼也看不出到底什么意思,看了英文原文, GPT就是Generative Pre-training Transformer(预训练生…

ChatGPT一枪打服谷歌AI人才!情人节组团加盟OpenAI

金磊 梦晨 发自 凹非寺量子位 | 公众号 QbitAI ChatGPT的号角一吹,连谷歌的顶尖AI人才都开始纷纷倒戈了! 就在今天凌晨,前后仅半个小时功夫,就有2位谷歌大脑人才连夜宣布入盟OpenAI: 他们是Jason Wei和Hyung Won Chung…

ChatGPT 冲击下,特斯拉曾留不住的 AI 大牛,再次回归 OpenAI !

整理 | 屠敏 出品 | CSDN(ID:CSDNnews) 技术圈毕竟还是一个“圈”,兜兜转转都是会遇见。 半年前,特斯拉 AI 的中坚力量,即 AI 部门的主管 Andrej Karpathy 在给自己放了 4 个月的长假之后,选择离…

实测最像ChatGPT的中文产品:能解释三体、懂弱智吧的梗,内测开启人人都能试!...

明敏 发自 凹非寺量子位 | 公众号 QbitAI 最像ChatGPT的中文产品,出现了! 昨晚,一个名叫Inspo的生成式对话AI,刚刚在“民间”开启内测,马上引发不小反响。 体验过的博主表示: 1分钟搞定3份策划,…

ChatGPT 有哪些 “激动人心的时刻“?以及自己的一些思考

文章目录 一、前言二、主要内容三、一些思考 🍉 CSDN 叶庭云:https://yetingyun.blog.csdn.net/ 一、前言 近日,英伟达创始人兼 CEO 黄仁勋与 OpenAI 联合创始人及首席科学家伊尔亚-苏茨克维 (Ilya Sutskever) 展开了一次 “炉边谈话”。 黄…

ChatGPT可能马上取代你,这是它能做的十个工作

“我们必须把这些东西看作提高生产力的工具,而不是完全的替代品。” 文|韩旭阳 来源|华尔街见闻(ID:wallstreetcn) 封面来源|视觉中国 ChatGPT 的横空出世,在业界掀起了惊涛骇浪。专…

AI 2022:浪潮奔涌,百舸争流

编者按:2022年已接近尾声,但技术的发展永不落幕。许多人说,2022是生成式AI的一年。这一年里,我们见证了Stable Diffusion和DALL-E2等AI图像编辑/绘画工具的爆发,也目睹了ChatGPT狂热席卷全球。 但AI技术和产业的发展&a…

惊艳的产品背后,是锐利的设计思维

缘起 几年前,我偶然用一个 叫 Zine 的小app 写了两篇文章,感觉非常好。 后来在网上认识 了Zine 团队的创始人 Louis,也喜欢上了他们的另一个 App:Varlens, 最近他们推出了记笔记的 App Lattics,一些功能也…

谷歌AI绘画4大牛携手创业,天使估值7个亿

衡宇 发自 凹非寺量子位 | 公众号 QbitAI 最近的谷歌像个大漏勺,这不,又有AIGC核心成员联手跑路咯! 量子位独家获悉,这回跟谷歌say byebye的,是文生图核心团队——AI绘画模型Imagen论文的四位核心作者,出走…

刘鹏报告:人工智能引领未来

2月16日,在“第七届挖贝北交所新三板领军企业年会暨挖贝金股奖颁奖盛典”上,刘鹏教授作主题演讲——《人工智能引领未来》,深度剖析了人工智能发展的三次飞跃,为现场嘉宾带来了一场科技盛宴。 刘鹏教授(配图来自挖贝网…

#挑战Open AI!马斯克宣布成立xAI,你怎么看?# 马斯克的xAI:充满困难与希望

文章目录 1.什么是xAI公司?2.xAI公司的图标3.“反AI斗士”马斯克进军AI:期待与挑战并存3.1 关于马斯克……3.2 这位“反AI斗士”……3.3 我的看法3.4 可能会遇到的困难与优势3.5 蓄谋已久的马斯克……3.6 xAI“全明星阵容”3.7 总结 4.百模大战&#xff…

大模型111人:谷歌和OpenAI的人才战争

衡宇 发自 凹非寺量子位 | 公众号 QbitAI 当我们围观ChatGPT炸开的多场激战时,还有什么是暗流下激战的? 今天要关注的,不是违背“非盈利”初心的OpenAI,也不是商业模式面临颠覆的谷歌搜索。把目光从公司层面挪开,看向另…

什么是数字化营销?与ChatGPT结合能产生的化学反应?

随着时代的变迁,品牌营销的方式也变得愈加多样化。许多人或许都听说过数字化营销,在当今,这种营销手段非常受到品牌欢迎。今天,我们一起来了解一些有关数字营销的知识。看看它与当下大火的ChatGPT结合又能碰撞出怎样的火花&#x…

一脉相通!聊聊 ChatGPT 发展路线

作者 | 上衫翔二 整理 | NewBeeNLP 大家好,这里是 NewBeeNLP。 首页最近被chatGPT刷屏,但翔二博主左看右看发现很多想法似乎都是一脉相通的,于是连夜从存档中找了一些文章尝试理一理它的理论路线。 具身智能综述和应用(Embodied …

下载微信公众号中的视频

转:https://www.zhihu.com/question/29576861 火狐浏览器: step 1 火狐浏览器 step 2 选择红色框 step 3 点击播放音频/视频,音频/视频文件就会生成出来,找到【type】里面的【media】,双击media文件,选择…