经验首页 前端设计 程序设计 Java相关 移动开发 数据库/运维 软件/图像 大数据/云计算 其他经验
当前位置:技术经验 » 大数据/云/AI » 人工智能基础 » 查看文章
白嫖一个属于你的私有大模型
来源:cnblogs  作者:yejg1212  时间:2023/9/9 10:40:49  对本文有异议

最近国内的大模型可谓是遍地开花,你瞧瞧:

这么火,我也想搞一个试试,于是就有了这篇文章!对,你没看错,就是白嫖。

毕竟人家清华都开源了,哈哈哈hoho~~

先把开源地址贴一下,老铁们可以自行去瞧一瞧:

  1. https://github.com/THUDM/ChatGLM-6B
  2. https://huggingface.co/THUDM/chatglm-6b
  3. ChatGLM-6B 是一个开源的、支持中英双语问答的对话语言模型,基于 General Language Model (GLM) 架构,具有 62 亿参数。
  4. 结合模型量化技术,用户可以在消费级的显卡上进行本地部署(INT4 量化级别下最低只需 6GB 显存)。
  5. ChatGLM-6B 使用了和 ChatGLM 相同的技术,针对中文问答和对话进行了优化。
  6. 经过约 1T 标识符的中英双语训练,辅以监督微调、反馈自助、人类反馈强化学习等技术的加持,62 亿参数的 ChatGLM-6B 已经能生成相当符合人类偏好的回答。

最重要的一点,人家遵循Apache-2.0协议。

下面开干吧!

准备机器

毕竟是要搭建可以跑起来的环境,机器肯定是必不可少的。好在阿里云有白嫖的使用机器。

  1. 进去阿里云免费试用活动页面 https://free.aliyun.com/

  2. 申请试用PAI-DSW资源,点击页面上的【立即试用】就可以了。(我因为已经试用了,所以显示的是“已试用”)

  3. 参考试用教程创建PAI平台示例。或者接着往下看

  4. 在阿里云页面搜索PAI,点击立即开通,然后进入到PAI控制台。

    开通的时候,有些可选的资源(比如NAS存储等),我因为没有,所以都没选。

  5. 进入控制台后,选择创建DSW实例

创建的时候,资源选择GPU资源,然后选择 支持资源包抵扣的那款 ecs.gn6v-c8g1.2xlarge

如果资源组下拉框是空白的,那么你需要在 上图左侧【工作空间详情】菜单,配置一下计算资源。

配置的按钮在工作空间详情页面右边【资源管理】,选择public-cluster 即可

镜像选择pytorch1.12,点击创建完成,机器就白嫖好了。

下载大模型

前面实例创建完之后,点击【打开】,会进入到机器的web控制台(Data Science Workshop)。

在这里,可以在Terminal里面操作了。

  1. 先执行安装git相关命令

    sudo apt-get update

    sudo apt-get install git-lfs

  2. 下载模型仓库(因为模型比较大,所以下载下来再执行方便些)

    git clone git@hf.co:THUDM/chatglm-6b

  3. 下载模型运行代码

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

部署启动

部署前修改源码

因为我们已经把模型下载下来了,部署前,需要把代码中的模型路径改成你自己的。

比如我们的模型下载在/mnt/workspace/chatglm-6b,我们就需要把 ChatGLM-6B 下的两个文件路径都改一下:

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

启动

进入到ChatGLM-6B目录,执行启动命令即可

python web_demo.py

命令执行成功,会提示。就表示启动成功了。

Running on local URL: http://127.0.0.1:7860

To create a public link, set share=True in launch().

如果想外网访问,就还需要改一点源码。在web_demo.py文件最末尾,设置share=True

修改前:demo.queue().launch(share=False, inbrowser=True)

修改后:demo.queue().launch(share=True, inbrowser=True)

改完后,保存,再次启动,会打印出Running on public URL:XXXX,通过这个链接即可打开体验。

启动中如果遇到缺少一些module,可通过【pip install xxx】进行安装,安装完之后再执行启动命令

使用效果

使用效果的话,只能说还有相当长的路需要走。

答的是有板有眼的!但是,实际上...

我把完整的代码贴在下面,大家可自行体验评论:

  1. import java.util.concurrent.Thread;
  2. import java.util.concurrent.Executors;
  3. import java.util.concurrent.ExecutorService;
  4. import java.util.concurrent.Executors.newSingleThreadExecutor();
  5. import java.util.concurrent.Future;
  6. public class TwoThreads交替打印String {
  7. public static void main(String[] args) {
  8. int numThreads = 2;
  9. String str = "Hello, World!";
  10. int index = 0;
  11. ExecutorService executor = Executors.newSingleThreadExecutor();
  12. List<Future<void>> futures = new ArrayList<>();
  13. for (int i = 0; i < numThreads; i++) {
  14. int size = str.length();
  15. int start = index * size + i;
  16. int end = start + size;
  17. int buffer = start * size + size;
  18. // 打印前一个线程的输出
  19. futures.add(executor.submit(() -> {
  20. Thread thread = new Thread(new MyThread(str, buffer));
  21. thread.start();
  22. }));
  23. // 打印当前线程的输出
  24. futures.add(executor.submit(() -> {
  25. Thread thread = new Thread(new MyThread(str, buffer));
  26. thread.start();
  27. }));
  28. // 等待当前线程完成
  29. thread.join();
  30. // 打印下一个线程的输出
  31. futures.add(executor.submit(() -> {
  32. Thread thread = new Thread(new MyThread(str, buffer));
  33. thread.start();
  34. }));
  35. index += size;
  36. }
  37. // 打印所有线程的输出
  38. for (Future<void> future : futures) {
  39. future.get();
  40. }
  41. executor.shutdown();
  42. }
  43. private static class MyThread implements Runnable {
  44. private final String str;
  45. private final int buffer;
  46. public MyThread(String str, int buffer) {
  47. this.str = str;
  48. this.buffer = buffer;
  49. }
  50. @Override
  51. public void run() {
  52. for (int i = 0; i < buffer; i++) {
  53. System.out.print(str.charAt(i) + " ");
  54. }
  55. }
  56. }
  57. }

原文链接:https://www.cnblogs.com/yejg1212/p/17684763.html

 友情链接:直通硅谷  点职佳  北美留学生论坛

本站QQ群:前端 618073944 | Java 606181507 | Python 626812652 | C/C++ 612253063 | 微信 634508462 | 苹果 692586424 | C#/.net 182808419 | PHP 305140648 | 运维 608723728

W3xue 的所有内容仅供测试,对任何法律问题及风险不承担任何责任。通过使用本站内容随之而来的风险与本站无关。
关于我们  |  意见建议  |  捐助我们  |  报错有奖  |  广告合作、友情链接(目前9元/月)请联系QQ:27243702 沸活量
皖ICP备17017327号-2 皖公网安备34020702000426号