神经网络 YaLM 100B 在实践中。

Программирование

6 月底,Yandex
向公众发布了一个名为 YaLM 100B 的 1000 亿参数的神经网络它是公共领域中最大的类 GPT 神经网络。它讲述了他们是如何教学的,展示了最好的例子以及神经元的能力。但它在实践中那么好,在家里也适用吗?这篇文章对此保持沉默,此外,运行和检查它并不容易,因为需要大约 200 Gb 的 GPU RAM。对哈布雷
这一评论最准确地揭示了情况

据称,在 Yandex 中,所有这些聪明人,他们甚至没有发布正常的操作指南。没有大模型的 api,也没有现成的精简中小型模型供普通人使用(在 Google Colab 中)。没有给出关于如何设置模型、如何生成文本的示例。只是这篇文章指出了书呆子的一些细微差别,仅此而已。仔细看看银行是如何用字母“C”做的就足够了。我的印象是这个模型只是失败的实验之一,很遗憾把它扔进垃圾桶,所以它被发布在开源中,以展示 Yandex 创造了哪些伟大的模型,而且它是开源的!

网上有很多关于如何运行 yalm 甚至在线尝试的问题,但都没有答案。我是提出这些问题的用户之一。并着手解决。因为我真的需要一种为金融机器人生成文本的方法。这样他们不仅可以预测值,还可以根据财务报告以文本形式对其进行评论。本质上,它与金融分析师所做的相同,只是使用了人工智能。有两种运行 yalm 的方法。
在云端租用服务器使用 200+ Gb GPU RAM 或完成代码并使用深度零卸载运行它(当 GPU 顺序处理部分神经网络,其余部分存储在 CPU RAM 或 NVMe 中)。第一个非常昂贵,大约每小时 2500 卢布或每月 170 万卢布。第二个未知数,因为 没有提供仓库中的代码,只
在仓库的issue中提示,做起来不难。让我们从简单的开始。

YaLM 100B 启动说明

1. 我们租用 200 GB GPU RAM,例如这里

神经网络 YaLM 100B 在实践中。

您需要至少 200 GB 的总视频内存。8×40 = 320 GB。只有这一款适合。少于200是不可能的,更多是可能的。箭头表示CPU RAM,我们不看。她可以是任何人。

我们指出一个大约 300 GB 的磁盘,以便使用备用磁盘,最好是快速磁盘,因为。数十千兆字节的数据将传入和传出。

神经网络 YaLM 100B 在实践中。在源中创建时,选择 Ubuntu ML(机器学习)。这是强制性的,以便配置视频卡并且不需要额外安装任何东西。

激活服务器后(可能需要 5-10 分钟),通过 ssh 或直接在服务器页面的 web 控制台中连接服务器并执行命令。

英伟达-smi

结果应该是一个包含显卡、驱动程序版本和 cuda 的表。大概是这样的。
神经网络 YaLM 100B 在实践中。在驱动程序版本标题和位置。左侧是设备编号,中间是设备内存大小。如果您没有此信息,那么您从错误的来源收集了服务器。如上所述,需要 Ubuntu ML(机器学习)。

2. 使用 YaLM 克隆存储库

sudo git clone https://github.com/yandex/YaLM-100B/yalmcd
yalm

克隆到您的主文件夹,这样您之后就不必编辑 docker 配置。如果在其他地方克隆,
请转到此处并将路径添加到克隆位置。

3.下载检查点(基本模型训练信息)

sudo chmod +x ./download/download.sh
sudo bash ./download/download.sh

这大约需要一个小时。为了不浪费时间,我们创建了一个新的 ssh 连接,同时我们开始构建一个 docker 容器。

4.安装nvidiadocker 2

普通docker不适合,
需要nvidia-docker2
https://docs.nvidia.com/datacenter/cloud-native/container-toolkit/install-guide.html#setting-up-nvidia-container-toolkit

5. 为 YaLM 构建容器

cd yalm
sudo chmod +x ./docker/*
sudo bash ./docker/build.sh

也是一个小时左右。

生活小窍门。您可以下载检查点、安装 docker 并在具有一块显卡的廉价服务器上构建容器。它会在时间上相同,所以你可以节省一点。在廉价服务器上组装后,我们将其删除,并使用廉价服务器的磁盘创建战斗服务器。这样您就不会多付等待组装和抽出检查站的时间。

6.准备内容

6.1 检查点

检查点下载完成后,您需要将它们滑入配置中。有两种方法,正确的参数或传输检查点。预计检查点将在项目的主目录中的任何地方,下载的内容必须从上面的下载文件夹中传输。在 yalm 文件夹中执行

mv ./download/yalm100b_checkpoint ./

或更改示例文件中文件的路径
https://github.com/yandex/YaLM-100B/blob/c91b7d7fe8dbf39c9e307d6d324446d0df136a23/examples/generate_interactive.sh#L8-L9

6.2 显卡

我们检查视频卡是否正确设置。如果您有八个视频卡,则无需更改任何内容。如果编号不同,那么我们将这些行更改
神经网络 YaLM 100B 在实践中。为第二行,使用的设备的编号(您可以在已启动的 nvidia-smi 中查看它们)。第四,他们的号码。

7.运行docker容器

在 yalm 文件夹中,执行命令

sudo bash ./docker/run.sh

如果一切正常,那么您将被带到一个容器,您需要在其中转到主目录中的 yalm 文件夹。

cd ~/yalm

8. 从 YaLM 100B 运行示例

我们已准备好启动其中一个示例。它们在
此处进行了描述。

chmod +x ./examples/generate_interactive.sh
./examples/generate_interactive.sh

请耐心等待,在创建 GPT2 模型并加载来自检查点的权重之前,还要等待 10-15 分钟。
神经网络 YaLM 100B 在实践中。

构建完成后,MegatronML 将提示您输入上下文以生成文本。打字时要小心。在某些情况下,会发生错误,程序崩溃,您需要重新启动程序集。因此,最好使用从文件中获取文本的示例。

九、工作成果

神经网络 YaLM 100B 在实践中。
神经网络 YaLM 100B 在实践中。看起来很有趣。当然,这些只是很好的例子。我对不同的样本进行了测试。正如预期的那样,上下文越好,生成的文本就越有意义。完整的实验代可以在链接中查看:

就价格而言,我花了大约 9000 卢布租用不同容量的服务器,从培训、准备到生成。一个特别令人失望的是您不能立即生成所有内容。考虑到每小时服务器的成本,启动需要很长时间,并且文本生成的速度不如我们希望的那样快。
神经网络 YaLM 100B 在实践中。 

如何在没有 200Gb GPU RAM 的情况下运行 YaLM?

您需要在配置中添加 deepspeed 零卸载。对于那些知道我们在说什么的人来说,这很容易做到。对于其他人来说,这根本不是一项微不足道的任务。重要的是要知道卸载可以在 CPU RAM 或 NVMe 中。你现在可以忘记 NVMe,因为。正在处理大量数据,磁盘无法处理。零卸载 CPU 更真实。诚然,为此,您需要有 200+ Gb CPU RAM 的库存,这也不便宜。一个文本将在大约 20-40 分钟内生成,因为还不能在两个视频卡上并行化它。正如您在下面的屏幕截图中看到的那样,生成只涉及一个视频卡,然后只占用了四分之一的内存。为什么不使用所有 24 GB 还有待观察,
神经网络 YaLM 100B 在实践中。好吧,总而言之,我会说甚至可以在一个 RTX 3070 TI 上运行。但这并没有什么特别的意义,因为。NVMe 不允许您快速处理交换中的 150 GB 数据,这些数据位于 96 GB RAM 的附件中。
神经网络 YaLM 100B 在实践中。

加起来

当然,我仍然会尝试找到最佳的发射路径。但到目前为止,我得出的结论是 YaLM 100b 对我的任务来说太贵/太慢了。用同样的钱,人们会写得更多更好。但我认为这是暂时的,我们拭目以待。如果您在启动、设置 yalm 方面需要帮助,或者想在您的上下文示例中查看结果,请写信给邮件或电报。

pskucherov
Rate author
Add a comment

  1. Olha

    Статья на Мега актуальную тему! Спасибо.

    回复
  2. Данила

    Крутая статья! Спасибо автору!

    回复
  3. Дмитрий

    СПАСИБО !!!
    три дня эту информацию искал
    нет подобного о RuGPT3 и Порфириче?

    回复