【生成AIに触れてみよう】 高火力DOKことはじめ #1 〜Dockerイメージ作成環境の構築〜

はじめに

こんにちは、にしだゆうきです。

近年ChatGPTやStable DiffusionをはじめとしてさまざまなLLM(Large Language Models:大規模言語モデル)、生成AI、機械学習といった技術が注目されており、その技術を活用したアプリケーションの開発や提供も進みつつあります。

さくらインターネットではそういった生成AIアプリを動作させるのに最適なサービスとして、2024年6月27日に高火力 DOK(こうかりょくドック)をリリースしました。

本記事では2回に分けて、そういったAIアプリケーションの開発を考える人が高火力 DOKを扱えるようになる方法をご紹介します。各回の内容は以下を予定しています。

  • #1 AI処理を含むコンテナイメージを作る環境を構築する
  • #2 実際にコンテナイメージを作り、高火力 DOKで動作させる

前提情報

対象読者

  • カスタマイズされたAIモデルを含むサービスの作り方を理解したい人
  • その前段階としてDockerの使い方にも触れておきたい人

注意点

  • サーバーおよびディスクの維持には費用がかかります
    • さくらのクラウドの場合、使用するサーバーおよびディスクについては費用が発生します
    • サーバーのみ、停止により課金を停止することができます
    • 後述の「高火力 DOK無料お試しキャンペーン」で入手できるクラウドクーポンを使用することで最大3ヶ月/20,000円分の費用を抑えることができます。
  • サーバーのセキュリティ対策については言及の対象外となります
    • イメージの作成時のみ起動し、それ以外では停止しておくことを強く推奨します

PC環境

本記事での解説環境は以下のとおりです。ターミナルソフトウェアは事前にインストールしておいてください。

  • OS:Windows 11 Enterprise / Ver. 23H2 / OSビルド 22631.3737
  • ターミナルソフトウェア:Teraterm / Ver. 5.2

生成AIと高火力DOKの関係

生成AIのモデルと利用方法

昨今のAIの環境においては、前述のOpenAI社のChatGPTやGoogle社のGeminiなどのメガクラウド側でカスタマイズ済みのモデルにRAG(Retrieval-Augmented Generation:検索拡張生成)などの技術で一部のデータ連携のみ行いそのまま使う場合もあれば、オープンなモデル(いわゆる「ベースモデル」「基盤(ファウンデーション)モデル」)を元に、自分たちで「継続事前学習」「ファインチューニング」「アラインメント」といったカスタマイズを加えた独自のモデルを使う場合が存在します。

LLMの学習およびカスタマイズ手法の全体像
(出典:LLMのファインチューニングを他手法との違いから理解する)

前者の場合、SaaSとして気軽に利用できる一方でカスタマイズ性が限定されるため、サービスとして組み立てる場合に他社との差別化が難しいものになっています。後者の場合、カスタムの自由度は高い一方でコンピューティングリソースは提供されないため、GPUを含めてすべてのインフラを別途用意した上でAIアプリケーションを動作させる必要が出てきます。

高火力 DOKの立ち位置

高火力 DOKではあらかじめ任意のモデルをDockerイメージとして用意しておくことで、裏で動く実行環境などを都度構築することなく使えるマネージドなコンテナ実行環境を提供するサービスで、このような二極化された問題を解消します。
軽量にアプリケーションを動作させることができるDocker(ドッカー)と呼ばれるコンテナ技術を使い、生成AIのようなGPUを利用するアプリケーションを安価に実行できるようにしています。

記事の説明範囲

今回は一般的にDockerイメージを固めて利用できるようにするための環境作りをスタートとし、最終的には任意のAIモデルを高火力 DOK上で動作させるまでの方法を解説していきたいと思います。
Dockerイメージ作成用サーバーの構築に加えて、後の記事で使うためにコンテナレジストリとオブジェクトストレージの準備も合わせて行います。

Dockerイメージ作成用サーバーの構築

本記事での解説環境は以下のとおりです。下記サーバーを構築し、その上でイメージの作成および動作確認までを行い、高火力 DOKが実行できるようにコンテナレジストリにアップロード(push)します。

  • 利用クラウド:さくらのクラウド
  • サーバーのOS:ubuntu 22.04 LTS

すでにDocker環境がある場合には、そちらでイメージを作成することもできます。既存の環境を使用する場合には次章「さくらのコンテナレジストリでDockerイメージアップロード用レジストリの作成」に進んでください。なお、その場合は環境の差異による違いについてはご自身で解決をお願いします。

クラウドでのサーバーリソース作成

さくらのクラウドのコントロールパネルにログインします。ログインの際には以下の2つのパターンからいずれかを選ぶことができます。

  • 管理者として、会員ID+パスワードでログインする
  • ユーザーとして、会員ID+管理者から割り当てられたユーザーコード+パスワードでログインする

上記URLからのログインが完了し、左側メニューの「サーバ」をクリックするとサーバー一覧が表示されます。

サーバ一覧画面右上の「追加」をクリックしするとサーバ追加画面に遷移します。ここで以下のパラメータを指定して「作成」をクリックします。(その他のパラメータはデフォルトの値を使用します)

  • サーバプラン - 仮想コア : 2
  • サーバプラン - メモリ : 4GB
  • ディスク - アーカイブ選択 : Ubuntu Server 22.04.4 LTS 64bit
  • ディスク - ディスクサイズ : 100GB
  • ディスクの修正 ‐ 管理ユーザのパスワード : 任意のパスワード
  • ディスクの修正 ‐ ホスト名 : 任意のホスト名 (本記事では「dockerimage-test」)
  • サーバの情報 - 名前 : 任意の名前 (本記事では「Dockerイメージ作成テスト」)

「作成」ボタンを押すと操作確認ダイアログが表示されますので、問題なければ再度「作成」をクリックします。

作成中、サーバとディスクリソースはすぐに完了しますが、ディスクコピーは少し時間がかかります。
作業が完了するとすべてのステータスが「成功」になります。「閉じる」をクリックしてダイアログを閉じます。

左メニュー「サーバ」をクリックしてサーバ一覧画面に再度遷移すると、作成したサーバーを確認できます。

サーバー上でのDocker環境構築

サーバ一覧画面で、作成したサーバーの「NIC」欄でインターネット側からアクセス可能なグローバルIPアドレスを確認することができます。コピーボタンをクリックすることで対象のIPアドレスをコピーすることができます。

Teratermを起動し、他パラメータはそのままでコピーしたIPアドレスを貼付して「OK」をクリックします。

初回アクセス時にはセキュリティ警告が表示されます。「続行」をクリックします。

ユーザー「ubuntu」およびパスワード(サーバー作成時に指定したもの)を入力して「OK」をクリックします。

ログインが成功すると以下のような画面が表示されます。

以下のコマンドを実行し、OSのパッケージ一覧およびパッケージの更新を実施の上、サーバーを再起動します。サーバーを再起動するといったんTeratermが終了するため、再度Teratermを起動してログインを行います。

sudo apt update && sudo apt upgrade -y && sudo reboot

再起動時に新しいカーネルの案内が出てきた場合、すべてデフォルトで「OK」を選択します。

次にDockerのインストールを行います。Docker.comで提供されているインストールスクリプトをダウンロードし実行します。

curl -fsSL https://get.docker.com -o get-docker.sh
sudo sh get-docker.sh

dockerコマンドが実行できることを確認します。

sudo docker

以上でDockerイメージ作成サーバーの構築は完了です。

さくらのコンテナレジストリでDockerイメージアップロード用レジストリの作成

コンテナレジストリは、Dockerなどのコンテナエンジンが扱うイメージファイルを保管するレジストリ機能をさくらのクラウド上で提供するサービスです。コントロールパネルからレジストリの作成・管理を行うことが可能で、誰でも読み込みが可能となる公開設定にしたり、自分専用のイメージ保管用として利用する場合に便利な非公開設定など、利用方法に応じたアクセスレベル設定を行うことができます。

※コンテナレジストリはLabプロダクト(開発中のサービスを実験的に提供するもの)となります。詳細は「Labプロダクトとは」をご覧ください。

コンテナレジストリの作成

さくらのクラウドのコントロールパネルにログインします。
左メニュー「LAB」→「コンテナレジストリ」をクリックすると、コンテナレジストリ一覧が表示されます。

コンテナレジストリ一覧画面右上の「追加」をクリックし、コンテナレジストリ追加画面に遷移の上、以下のパラメータを指定して「作成」をクリックします。(その他のパラメータはデフォルトの値を使用します)

  • 名前 : 任意の名前
  • コンテナレジストリ名 : 任意のコンテナレジストリ名 (本記事では「test-reg」とします)
  • 公開設定 : 非公開

作成時には操作確認ダイアログが表示されますので、問題なければ再度「作成」をクリックします。

作業が完了するとすべてのステータスが「成功」になります。「閉じる」をクリックしてダイアログを閉じます。

注意:コンテナレジストリ名はレジストリ全体で一意である必要があります。他のユーザーと重複するレジストリ名を指定した場合、すでに利用されている旨のエラーメッセージが返されます。

ユーザーの追加

次に、コンテナレジストリにアクセスできるユーザーを作成します。コンテナレジストリ一覧画面より、先ほど作成したレジストリをダブルクリックすると詳細画面に遷移します。

詳細画面の右下の追加ボタンから、以下パラメータを指定の上、「作成」をクリックします。

  • ユーザ名 : 任意の名前 (本記事では「test-user」を指定します)
  • パスワード : 任意のパスワード
  • ユーザ権限設定 : All

作業が完了するとすべてのステータスが「成功」になります。「閉じる」をクリックしてダイアログを閉じます。

以上でコンテナレジストリおよびユーザーの作成は完了です。

オブジェクトストレージでのバケット作成 ※任意

さくらのクラウドで提供される「オブジェクトストレージ」は、大容量のデータや大量のデータをスケーラブルに保存できるAmazon S3互換APIを備えたストレージサービスです。

次回以降の記事ではデータの格納場所としてオブジェクトストレージを指定することもできます。本記事ではAIが生成した結果を格納するための「バケット」を作成する方法を紹介します。

オブジェクトストレージの利用開始

さくらのクラウドのコントロールパネルにログインします。ログインしたら、メニュー画面で「オブジェクトストレージ」をクリックします。

オブジェクトストレージのコントロールパネルに遷移しますので、選択可能なサイトをクリックします。

初回の選択時にはサイトの利用開始ダイアログが表示されるので、「OK」をクリックします。

サイトの利用が開始されるとアクセスキー画面が表示され、アクセスキーIDとシークレットアクセスキーが発行されますので、コピーして保存します。

バケットの作成

次にバケットを作成するため、「バケット」をクリックします。

バケット画面で「バケットの追加」をクリックします。

バケットの追加画面でバケットの名前を指定します。今回は「test-dok-bucket」を指定します。名前を指定したら「追加」ボタンを押します。バケット追加の受付から追加完了まで処理に時間がかかる場合があります。

以上でオブジェクトストレージのバケット作成は完了です。

最後に

以上でDockerイメージの作成環境と、高火力 DOK利用時に必要な周辺サービスの環境構築が整いました。

次回の記事ではこの環境を活用し、実際に高火力 DOKで動作するコンテナイメージの作成までを説明していきたいと思います。

高火力 DOK無料お試しキャンペーンについて

現在、高火力 DOKでは、周辺環境も含めて無料(一部は最大20,000円分のクーポン提供)でお試しいただけるキャンペーンを行っています。ご興味がある方は是非以下のURLからお申し込みください! (受付期間は2024年9月20日までです)

https://www.sakura.ad.jp/inquiry/koukaryoku-dok-cp