【Colossal-AI】LLMが自分のPCで安く簡単に、高速で利用できるツール

Colossal-AI LLM ツール

皆さん、Colossal-AIという機械学習フレームワークをご存知ですか?

Colossal-AIは、大規模なAIモデルをより手頃な価格で、より高速に利用できる革新的なツールです。弊社ではChatGPTやLLMを使っているのですが、その際に「Colossal-AIは学習の時に役に立つだろうな」と思っています。

Colossal-AIの存在をまだ知らなかった方は多いかと思いますが、実はこのツール、GitHubで3万以上のスターがつくほど大人気なんです!

なんでも、Colossal-AIを使えば大規模なAIモデルの学習を、めちゃくちゃ簡単に行えるんです。

というわけで今回は、そんなColossal-AIの概要や導入方法、実際に使ってみた感想についてご紹介します。
この記事を最後まで読むと、自宅のPCで簡単にLLMを使えるようになります。

ぜひ最後までご覧ください!

目次

Colossal-AIの概要

Colossal-AIは、LLMを自分のPC上で手軽に利用するためのツールです。

これまでローカルで使うことが難しかったLLMもColossal-AIを使うと、簡単に動かせます。HPC-AI Technology Inc.によって開発されたこのOSSは、PyTorchを基盤としており、複数のGPUを使用した分散学習が特徴的です。

分散学習とは、AIの学習を高速化させる技術のことを指します。

元のPyTorchと比較しても、単一マシンでのChatGPTの学習が7.73倍高速、1GPUでの推論が1.42倍高速と、高速な学習と推論を実現しています。

公式サイトでは、Colossal-AIの使用方法や分散技術に関する情報が公開されています。そして、開発者や研究者が効果的に利用できるリソースが、とても充実しているのです。

参考記事:https://colossalai.org/

なお、大規模言語モデルを自宅のPCで動かせるツールについて知りたい方はこちらをご覧ください。
【Petals】パラメーター100B超えのLLMを自宅のPCで動かす方法

Colossal-AIの料金体系

Colossal-AIはOSSであるため、誰でも無料で利用できます。

また、AIの学習も高速に行えるので、電気代などのコストも、少なく済むと考えられます。

Colossal-AIの使い方

今回は、Colossal-AIを用いて、CIFAR10データセット上でのResNetの学習を、単一のGPUで行う方法をご紹介します。

ここでは、Google Colaboratoryを用いて、環境はT4GPUで行います。

まずは、colossalai等必要なライブラリのインストールです。

!pip install colossalai%cd ColossalAI!pip install -r requirements/requirements.txt!CUDA_EXT=1 pip install .%cd examples/images/resnet!pip install -r requirements.txt

この時に、以下の要件を満たす必要があります。

  • PyTorch >= 1.11 (PyTorch 2.x は進行中)
  • Python >= 3.7
  • CUDA >= 11.0
  • NVIDIA GPU Compute Capability >= 7.0 (V100/RTX20 以上)
  • Linux OS

では、次に実際に使ってみた様子をご紹介します。

Colossal-AIを実際に使ってみた

次に、以下のソースコードを実行して、単一のGPUでFP32を使用して学習を行いましょう。

!colossalai run --nproc_per_node 1 train.py -c ./ckpt-fp32

上記の学習のコードでは、以下のオプションが可能です。

オプション意味設定できる値
-p, –plugin学習方法torch_ddp(デフォルト)torch_ddp_fp16low_level_zero
-r, –resumeチェックポイントファイルパスから再開数字で設定デフォルトは-1
-c, –checkpointチェックポイントを保存するフォルダフォルダをパスで設定デフォルトは./checkpoint
-i, –intervalチェックポイントを保存する間隔時間を数値で設定0に設定すると保存されない
–target_acc目標のaccuracyで、未達成の場合は例外が発生目標となるAcurracyの数字を入れるデフォルトはNone

また、上記のコードの次の部分で、マシン上のGPUの数を設定できます。

--nproc_per_node

今回は単一のGPUで行うので、1を指定しています。

学習が終わったら、次のソースコードを実行して、評価をしてみましょう。

!python eval.py -c ./ckpt-fp32 -e 80

上記の学習のコードでは、以下のオプションが可能です。

オプション意味設定できる値
-e, –epoch評価のためのエポック数数値で設定
-c, –checkpointチェックポイントのフォルダフォルダをパスで設定

上記を実行したら、ResNet-18モデルのAccuracyが出力されます。期待される精度は、Single-GPU Baseline FP32で85.85%です。

参考記事:https://github.com/hpcaitech/ColossalAI/tree/main/examples/images/resnet

今回は単一のGPUで学習と評価を行いましたが、他にもデータ並列やハイブリッド並列など、様々な方法で学習を行うことができます。

Colossal-AIの「学習プロセスの効率化ができる」という強みは本当なのか?

ここでは、Colossal-AIの学習効率を確かめるために、一般的に使われる機械学習ツールのPyTorchと比較しました。

公式によると、従来のPyTorchによる学習よりも効率が良く、高速に行えるそうです。

まずは以下のように、timeをインポートして、Colossal-AIの実行時間を測ってみたいと思います。

import time

start_time = time.time()

!colossalai run --nproc_per_node 1 train.py -c ./ckpt-fp32

end_time = time.time()

elapsed_time = end_time - start_time
print(f"ColossalAI Training took {elapsed_time:.2f} seconds.")

次に、同様の処理をPyTorchで行いたいと思います。

import torch
import torch.nn as nn
import torch.optim as optim
import torchvision
import torchvision.transforms as transforms
import torchvision.models as models

transform = transforms.Compose([
    transforms.ToTensor(),
    transforms.Normalize((0.5, 0.5, 0.5), (0.5, 0.5, 0.5))
])

trainset = torchvision.datasets.CIFAR10(root='./data', train=True, download=True, transform=transform)
trainloader = torch.utils.data.DataLoader(trainset, batch_size=4, shuffle=True, num_workers=2)

testset = torchvision.datasets.CIFAR10(root='./data', train=False, download=True, transform=transform)
testloader = torch.utils.data.DataLoader(testset, batch_size=4, shuffle=False, num_workers=2)

device = torch.device("cuda:0" if torch.cuda.is_available() else "cpu")
net = models.resnet18(pretrained=False)
net = net.to(device)

criterion = nn.CrossEntropyLoss()
optimizer = optim.SGD(net.parameters(), lr=0.001, momentum=0.9)

import time

start_time = time.time()

for epoch in range(80):  # 80エポックで学習
    running_loss = 0.0
    for i, data in enumerate(trainloader, 0):
        inputs, labels = data[0].to(device), data[1].to(device)

        optimizer.zero_grad()

        outputs = net(inputs)
        loss = criterion(outputs, labels)
        loss.backward()
        optimizer.step()

        running_loss += loss.item()
        if i % 2000 == 1999:  # 2000ミニバッチごとに表示
            print('[%d, %5d] loss: %.3f' % (epoch + 1, i + 1, running_loss / 2000))
            running_loss = 0.0

end_time = time.time()

elapsed_time = end_time - start_time
print(f"PyTorch Training took {elapsed_time:.2f} seconds.")

correct = 0
total = 0
with torch.no_grad():
    for data in testloader:
        images, labels = data[0].to(device), data[1].to(device)
        outputs = net(images)
        _, predicted = outputs.max(1)
        total += labels.size(0)
        correct += (predicted == labels).sum().item()

print('Accuracy of the network on the 10000 test images: %d %%' % (100 * correct / total))

すると、実行時間や精度は以下のようになりました。

Colossal-AIPyTorch
実行時間1831.43秒9187.92秒
精度84.56 %74 %

結果、学習効率も精度も、ColossaoAIの方が高いことが分かりました。

そのため、高性能なPCに限らず、自分のPC上でも、Colossal-AIを用いれば手軽に、高精度なAIを構築することができます。

まとめ

Colossal-AIは、大規模なAIモデルの訓練と実行を効率的に行えるツールです。HPC-AI Technology Inc.によって開発されたこのOSSは、PyTorchを基盤としており、複数のGPUを使用した分散学習が特徴的です。

学習効率と精度に関して、Colossal-AIとPyTorchで比較したところ、以下の結果になりました。

Colossal-AIPyTorch
実行時間1831.43秒9187.92秒
精度84.56 %74 %

以上の結果から、Colossal-AIを使うことで効率的にAIモデルを構築できます。

サービス紹介資料

生成系AIの業務活用なら!

・生成系AIを活用したPoC開発

・生成系AIのコンサルティング

・システム間API連携

最後に

いかがだったでしょうか?

弊社では

・マーケティングやエンジニアリングなどの専門知識を学習させたAI社員の開発
・要件定義・業務フロー作成を80%自動化できる自律型AIエージェントの開発
・生成AIとRPAを組み合わせた業務自動化ツールの開発
・社内人事業務を99%自動化できるAIツールの開発
ハルシネーション対策AIツールの開発
自社専用のAIチャットボットの開発

などの開発実績がございます。

まずは、「無料相談」にてご相談を承っておりますので、ご興味がある方はぜひご連絡ください。

➡︎生成AIを使った業務効率化、生成AIツールの開発について相談をしてみる。

生成AIを社内で活用していきたい方へ
無料相談

「生成AIを社内で活用したい」「生成AIの事業をやっていきたい」という方に向けて、生成AI社内セミナー・勉強会をさせていただいております。

セミナー内容や料金については、ご相談ください。

また、サービス紹介資料もご用意しておりますので、併せてご確認ください。

投稿者

  • Hiromi Sai

    ChatGPTメディア運営 / テクニカルライター リベラルアーツ専攻。大学休学中は、Webマーケティング会社のマネージャーとしてライター、ディレクター100名のマネジメントをする。南米のチリとタイでの長期居住歴を持つ。

  • URLをコピーしました!
  • URLをコピーしました!
目次