LinuxのRAMが足りない!スワップを水増しする dd,mkswap,swapon

Takuya Kobayashi⛰
2024.05.28

8GB RAMで生成AIを頑張っているのですが、メモリ不足による強制終了で作業が進まないので、スワップ領域を作ろうと思います。

メモリもスワップも使い切っている様子

スワップ領域の確認

まず、スワップの状態をモニターするにはswaponコマンドを実行します。

$ swapon

Ubuntu22.04をパーティションをいじらずにおまかせでインストールしたところ、「/swapfile」に2GBのスワップ領域が作成されていました。

既存のスワップ領域を拡張する

すでにあるスワップ領域「/swapfile」を拡張しようと思います。

1.swapoffコマンドでスワップを無効化

$ sudo swapoff /swapfile

2.ddコマンドで/swapfileを24GBに水増し

$ sudo dd if=/dev/zero of=/swapfile bs=1G count=24

Linuxには/dev/zeroというアクセスすると空データを出力し続ける不思議なファイルがあります。それを利用してddコマンドで任意のサイズのファイルを作成しています。

さらにLinuxには/dev/nullという虚無を返すファイルや、/dev/random,/dev/urandomというランダムデータを返すファイルもあり、それぞれ色々な使い道があります。

3.mkswapコマンドでスワップを作成

$ sudo mkswap /swapfile

4.swaponコマンドでスワップを有効化

$ sudo swapon /swapfile

これで24GBのスワップ領域ができました。

スワップ領域を拡張する一連の操作

LLMを動かしているときのメモリとスワップの様子

rinna/japanese-gpt-neox-3.6bをCPUで動かすとRAMはほぼ使い切っており、スワップは12GBも使用しています。(GPUの4GB VRAMでは足りなくて速攻落ちる)

これを見ると、Ollamaは7Bのモデルでも軽快に動くので、限られたリソースの中でだいぶうまいことやってるんだなぁと感心します。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です