Press "Enter" to skip to content

超级加速你的Linux虚拟机,用于数据科学:提升Linux虚拟机的内存以改善性能的指南

在使用DistilBERT时是否曾因“内存不足”错误而陷入困境?

我曾经也遇到过这个问题,并找到了一个改变游戏规则的解决方案:交换文件。

交换文件通过将系统的内存容量扩展到磁盘空间上,提供了一个巧妙的解决方案来应对内存不足的挑战。

在本文中,我们将了解什么是交换文件,并深入探讨创建和利用交换文件的逐步过程。

Image Source

什么是交换文件?

交换文件用作内存占用较多任务的保险丝。想象一下,您计算机的内存(RAM)就像一个工作空间,它临时存储需要立即处理的数据。然而,在处理基于Transformer的模型时,这个工作空间有时会变得过于拥挤。这就是交换文件发挥作用的时候。它们作为一种补充空间,驻留在计算机的存储驱动器上,当RAM完全占满时介入。当RAM达到其限制时,很少使用的数据会从RAM移动到交换文件中,为正在进行的任务释放宝贵的RAM空间。

尽管与RAM相比,交换文件的访问速度较慢,但它们可以防止系统因内存耗尽而崩溃,确保即使在重负载下也能平稳运行。

设置交换文件涉及将一部分存储空间指定为此目的的过程。一旦配置完成,操作系统会自动管理交换过程,优化内存使用。但值得注意的是,尽管交换文件是避免崩溃的有益解决方案,但它们不应仅仅依赖于物理RAM的替代。

实质上,交换文件在高效利用内存和在RAM和存储之间交换数据导致的潜在减速之间取得了平衡,使其成为维持系统稳定性和性能的重要工具。

逐步指南:

以下是在Linux虚拟机中使用交换文件概念增加RAM的逐步指南:

1. 检查当前RAM和交换:

在创建交换文件之前,了解当前的RAM和交换使用情况是很有用的。您可以使用free命令来检查:

free -h

从下面的图像中可以看出,我们有1 GB的内存,目前没有任何交换内存。

Image Source — Check RAM and Swap memory

2. 创建交换文件:

以下bash命令用于在Linux系统中创建交换文件。

sudo fallocate -l 2G /swapfile

让我们逐个解释命令的每个部分:

  • sudo:此命令用于以超级用户特权执行后续命令,允许您执行管理任务。
  • fallocate:这是一个用于为文件分配空间的命令。在这种情况下,它用于创建交换文件。
  • -l 2G:此部分指定要创建的文件的大小。在这里,它将大小设置为2千兆字节(2G)。您可以调整此值以为交换文件分配更多或更少的空间。
  • /swapfile:这是将要创建的文件的路径和名称。在这种情况下,交换文件将被命名为“swapfile”,并在根目录(/)中创建。

因此,当您运行该命令时,它会在Linux系统的根目录中创建一个名为“swapfile”的大小为2千兆字节的交换文件。然后,该交换文件可以用作虚拟内存来补充系统的物理RAM。

为了确保每个人都可以访问交换文件,我们可以使用以下bash命令。

sudo chmod 600 /swapfile

3. 将指定的文件设置为交换空间:

以下bash命令用于在Linux系统中设置指定的文件作为交换空间。

sudo mkswap /swapfile

让我们解释一下这个命令的作用:

  • mkswap:这是一个命令,用于在设备或文件上设置交换区。在本例中,它被用于将”/swapfile”配置为交换区。
  • /swapfile:这是要设置为交换空间的文件的路径和名称。

当您运行此命令时,它会准备“/swapfile”以用作交换区。这意味着文件被格式化和组织成一种Linux系统可以高效使用的方式,用于存储通常存储在RAM中的数据。这使得您的系统可以通过利用交换空间来处理物理RAM不足以运行所有活动进程的情况,从而扩展其内存容量。

4. 激活交换空间:

以下bash命令用于在Linux系统中激活交换空间。

sudo swapon /swapfile

让我们解释一下这个命令的作用:

  • swapon:这是一个命令,用于激活交换设备或文件。它使指定的交换区开始用作虚拟内存。
  • /swapfile:这是要激活的交换文件的路径和名称。

当您运行此命令时,它会将“/swapfile”激活为交换区,使其可供系统用作其物理RAM的扩展。这意味着数据现在可以在交换空间和RAM之间交换,使系统能够更高效地管理内存并处理需要比物理可用内存更多内存的任务。

5. 显示活动交换区的列表:

以下bash命令用于在Linux系统上显示活动交换区的列表。

sudo swapon - show

当您以超级用户权限使用sudo运行此命令时,它将显示活动交换区的详细信息,包括名称、类型、大小和其他相关信息。这对于验证您的交换文件或其他交换设备是否被正确激活并用于虚拟内存管理非常有帮助。

从下面的图像中可以验证,我们创建了一个2GB大小的交换文件。

Image Source — To display active swap areas in the VM

我们可以使用相同的free -h命令清晰地可视化RAM和交换内存。正如我们所看到的,我们成功地创建了一个2GB的交换内存。

Image Source — Check RAM and Swap memory

恭喜!通过交换文件的功能,您成功地提升了Linux虚拟机的性能!通过掌握交换文件的创建、配置和激活,您为自己提供了一个宝贵的工具,以克服内存限制并将数据科学项目提升到新的高度。继续努力!

参考资料

https://www.udemy.com/course/nlp-with-bert-in-python/

想要联系我们吗?

如果您喜欢这篇文章,请在VoAGI上关注我,以获取更多有关机器学习和计算机科学的故事。

Linked In — Prithivee Ramalingam | LinkedIn

Leave a Reply

Your email address will not be published. Required fields are marked *