- Java锁的逻辑(结合对象头和ObjectMonitor)
- 还在用饼状图?来瞧瞧这些炫酷的百分比可视化新图形(附代码实现)⛵
- 自动注册实体类到EntityFrameworkCore上下文,并适配ABP及ABPVNext
- 基于Sklearn机器学习代码实战
最近国内的大模型可谓是遍地开花,你瞧瞧:
这么火,我也想搞一个试试,于是就有了这篇文章!对,你没看错,就是白嫖.
毕竟人家清华都开源了,哈哈哈hoho~~ 。
先把开源地址贴一下,老铁们可以自行去瞧一瞧:
https://github.com/THUDM/ChatGLM-6B
https://huggingface.co/THUDM/chatglm-6b
ChatGLM-6B 是一个开源的、支持中英双语问答的对话语言模型,基于 General Language Model (GLM) 架构,具有 62 亿参数。
结合模型量化技术,用户可以在消费级的显卡上进行本地部署(INT4 量化级别下最低只需 6GB 显存)。
ChatGLM-6B 使用了和 ChatGLM 相同的技术,针对中文问答和对话进行了优化。
经过约 1T 标识符的中英双语训练,辅以监督微调、反馈自助、人类反馈强化学习等技术的加持,62 亿参数的 ChatGLM-6B 已经能生成相当符合人类偏好的回答。
最重要的一点,人家遵循Apache-2.0协议.
下面开干吧! 。
毕竟是要搭建可以跑起来的环境,机器肯定是必不可少的。好在阿里云有白嫖的使用机器.
进去阿里云免费试用活动页面 https://free.aliyun.com/ 。
申请试用PAI-DSW资源,点击页面上的【立即试用】就可以了。(我因为已经试用了,所以显示的是“已试用”) 。
参考试用教程创建PAI平台示例。或者接着往下看 。
在阿里云页面搜索PAI,点击立即开通,然后进入到PAI控制台.
开通的时候,有些可选的资源(比如NAS存储等),我因为没有,所以都没选.
进入控制台后,选择创建DSW实例 。
创建的时候,资源选择GPU资源,然后选择 支持资源包抵扣的那款 ecs.gn6v-c8g1.2xlarge 。
如果资源组下拉框是空白的,那么你需要在 上图左侧【工作空间详情】菜单,配置一下计算资源.
配置的按钮在工作空间详情页面右边【资源管理】,选择public-cluster 即可 。
镜像选择pytorch1.12,点击创建完成,机器就白嫖好了.
前面实例创建完之后,点击【打开】,会进入到机器的web控制台(Data Science Workshop).
在这里,可以在Terminal里面操作了.
先执行安装git相关命令 。
sudo apt-get update 。
sudo apt-get install git-lfs 。
下载模型仓库(因为模型比较大,所以下载下来再执行方便些) 。
git clone git@hf.co:THUDM/chatglm-6b 。
下载模型运行代码 。
git clone https://github.com/THUDM/ChatGLM-6B.git 。
因为我们已经把模型下载下来了,部署前,需要把代码中的模型路径改成你自己的.
比如我们的模型下载在/mnt/workspace/chatglm-6b,我们就需要把 ChatGLM-6B 下的两个文件路径都改一下:
进入到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】进行安装,安装完之后再执行启动命令 。
使用效果的话,只能说还有相当长的路需要走.
答的是有板有眼的!但是,实际上... 。
我把完整的代码贴在下面,大家可自行体验评论:
import java.util.concurrent.Thread;
import java.util.concurrent.Executors;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors.newSingleThreadExecutor();
import java.util.concurrent.Future;
public class TwoThreads交替打印String {
public static void main(String[] args) {
int numThreads = 2;
String str = "Hello, World!";
int index = 0;
ExecutorService executor = Executors.newSingleThreadExecutor();
List<Future<void>> futures = new ArrayList<>();
for (int i = 0; i < numThreads; i++) {
int size = str.length();
int start = index * size + i;
int end = start + size;
int buffer = start * size + size;
// 打印前一个线程的输出
futures.add(executor.submit(() -> {
Thread thread = new Thread(new MyThread(str, buffer));
thread.start();
}));
// 打印当前线程的输出
futures.add(executor.submit(() -> {
Thread thread = new Thread(new MyThread(str, buffer));
thread.start();
}));
// 等待当前线程完成
thread.join();
// 打印下一个线程的输出
futures.add(executor.submit(() -> {
Thread thread = new Thread(new MyThread(str, buffer));
thread.start();
}));
index += size;
}
// 打印所有线程的输出
for (Future<void> future : futures) {
future.get();
}
executor.shutdown();
}
private static class MyThread implements Runnable {
private final String str;
private final int buffer;
public MyThread(String str, int buffer) {
this.str = str;
this.buffer = buffer;
}
@Override
public void run() {
for (int i = 0; i < buffer; i++) {
System.out.print(str.charAt(i) + " ");
}
}
}
}
最后此篇关于白嫖一个属于你的私有大模型的文章就讲到这里了,如果你想了解更多关于白嫖一个属于你的私有大模型的内容请搜索CFSDN的文章或继续浏览相关文章,希望大家以后支持我的博客! 。
如果需要在类外访问静态(例如单例),可以选择公共(public)静态而不是私有(private)静态,而当不需要公开函数时首选私有(private)静态(否则未命名的命名空间就可以了)——在这种情况下
在互联网上进行了一些搜索,但找不到简单的答案。我的问题集是在 Android 框架中使用 Java,但我相信这也是标准的 Java 行为。我理解 final 和 private 的定义,它们都用于变量
我有这个代码: public final class Board { private final int[][] blocks; private final int N; pr
对我来说,过去作为 Objective-C 开发人员很简单。一个类需要公开的每个字段都是一个属性,每个私有(private)字段都是一个没有 getter 或 setter 的实例变量。但我经常看到人
按照目前的情况,这个问题不适合我们的问答形式。我们希望答案得到事实、引用或专业知识的支持,但这个问题可能会引发辩论、争论、投票或扩展讨论。如果您觉得这个问题可以改进并可能重新打开,visit the
我有一个在 Docker 容器中运行的应用程序。它需要来自公司私有(private) NPM 注册表(Sinopia)的一些私有(private)模块,并且访问这些需要用户身份验证。 Dockerfi
我试图理解 C# 使用 getters 和 setters 自动声明变量与 java 声明之间的区别。 在java中我通常这样做: private int test; public int getTe
我在 Azure 中创建了 VNET。我放入了一个子集 Azure Private Link,它在 VNET 之外和另一台虚拟机中调用 Azure Function。 当我尝试通过专用 IP 调用专用
我在 Azure 中创建了 VNET。我放入了一个子集 Azure Private Link,它在 VNET 之外和另一台虚拟机中调用 Azure Function。 当我尝试通过专用 IP 调用专用
我目前正在使用 Objective-C(适用于 iPhone)构建游戏。 为此,出于性能/复杂性原因,我略微打破了 MVC,并为 View (渲染器)提供了对模型的直接引用。这是因为它应该以 60fp
我已经在 ubuntu 上成功配置了 2 个虚拟主机站点(基于名称的虚拟主机)。我的 apache 版本是 2.2.22。 这两个站点都在本地主机上工作。 /etc/hosts 条目 127.0.0.
考虑下面的类 public class A { private final Map cache; public HeavyObject getThing(); } 假设不能泄漏对缓存
我有一个类,它有一个方法,我希望它只能被它的子对象访问,而不能被这个包中的其他类访问。 Modifier | Class | Package | Subclass | World ———————
本文实例讲述了JavaScript中的公有、私有、特权和静态成员用法。分享给大家供大家参考。具体分析如下: 下面的内容是在《JavaScript.DOM高级程序设计》里面摘抄出来的,比较容易理解,
我有一个用例,我已将其简化为以下程序: public class A { private int x = 100; class B { private int y = ne
问题: 类声明如下: class Select { public: template static Iterator function(Iterator , Iterator , bo
我是一名初级 PHP 程序员。我还有很多东西要学。这就是我问这个问题的原因。在一个类中,您有一个公共(public)函数,您可以从该类外部调用它。有时你有一个私有(private)函数,你可以在私有(
问题是: 何时使用私有(private)函数,何时使用嵌套函数? (我在问 F# 但也许答案可能与其他功能语言相关) 一个小例子 namespace SomeName module BinaryRea
我发现工作表中仍然可以使用私有(private)函数。它们是隐藏的,但如果用户输入他们的名字,他们就会被调用。为什么?它应该以这种方式工作吗?有没有办法完全阻止用户定义的函数在 VBA 项目之外使用?
所以我最近开始尝试使用 Kotlin,我偶然发现了这个: If a top-level declaration is marked private, it is private to the pack
我是一名优秀的程序员,十分优秀!