CTranslate2 在低CPU内存上加载模型

iaqfqrcu  于 2个月前  发布在  其他
关注(0)|答案(4)|浏览(37)

我正在努力加载一个缺少足够CPU内存来加载权重的量化模型。通常我会将权重分成多个碎片,然后相应地加载它们。在CTranslate中,这是否也是可能的,或者有类似的可能性?

9gm1akwq

9gm1akwq1#

不,模型只能完全加载到内存中。如果每次请求都要从磁盘重新加载模型,执行速度会非常慢。

a64a0gku

a64a0gku2#

不,不在磁盘上,我正在尝试详细说明:

  • 在运行量化后,会生成一个大小为20GB的model.bin文件。
  • 当加载这个二进制文件时,文件必须首先完全读入CPU内存,然后再分发到GPU。
  • 如果现在你的CPU内存小于20GB,你将无法加载这个文件。
  • 在HF转换器中,如何解决这个问题呢?就是将二进制文件分片成例如5GB的块。
  • 然后通过迭代这些块并将5GB读入CPU内存,分发到GPU,释放CPU内存等操作来自动加载。

我目前看不到这里的任何这样的功能,并且想知道如何实现这一点或者如何在CPU内存小于model.bin大小时解决这个问题。

huwehgph

huwehgph3#

好的,你的第一个帖子没有提到你最终想要在GPU上加载模型。有一个PR正在进行中,它可以实现你的需求,但目前仍处于开发阶段:#1058
目前,模型完全加载在CPU内存中。目前还无法控制这一点。

e5nszbig

e5nszbig4#

我明白了,谢谢,但很遗憾。
所以我认为没有解决办法。不幸的是,这使得我无法加载权重,尽管GPU可以轻松处理它。

相关问题