日本語言語モデルJapanese StableLM Base Alpha 7Bを Windows で動かす(Python,PyTorch を使用)(Windows 上)

要約】 日本語言語モデルJapanese StableLM Base Alpha 7BをWindowsで動かす手順は以下の通りである.まず,「pip install sentencepiece einops」と「pip install transformers」で必要なライブラリをインストールする.HuggingFaceの公式ページ https://huggingface.co/stabilityai/japanese-stablelm-base-alpha-7b に記載された手順に従い,そのページ内のPythonプログラムを実行する.さらに,このページではTkinterライブラリを使用してGUIを構築し,ユーザーからのメッセージをこのモデルに与え、結果を表示する Python アプリのソースコードと実行手順も示している.

アプリの実行画面

目次

  1. 前準備
  2. 日本語言語モデルJapanese StableLM Base Alpha 7Bを Windows で動かす
  3. 日本語言語モデルJapanese StableLM Base Alpha 7B に文章を与え,回答を得るプログラム

関連する外部ページ

前準備

Python のインストール(Windows上)

注:既にPython(バージョン3.12を推奨)がインストール済みの場合は,この手順は不要である.

winget(Windowsパッケージマネージャー)を使用してインストールを行う

  1. Windowsで,管理者権限コマンドプロンプトを起動(手順:Windowsキーまたはスタートメニュー > cmd と入力 > 右クリック > 「管理者として実行」)。
  2. winget(Windowsパッケージマネージャー)が利用可能か確認する:
    winget --version
    
  3. Pythonのインストール(下のコマンドにより Python 3.12 がインストールされる).
    reg add "HKLM\SYSTEM\CurrentControlSet\Control\FileSystem" /v LongPathsEnabled /t REG_DWORD /d 1 /f
    REM Python をシステム領域にインストール
    winget install --scope machine --id Python.Python.3.12 -e --silent
    REM Python のパス
    set "INSTALL_PATH=C:\Program Files\Python312"
    echo "%PATH%" | find /i "%INSTALL_PATH%" >nul
    if errorlevel 1 setx PATH "%PATH%;%INSTALL_PATH%" /M >nul
    echo "%PATH%" | find /i "%INSTALL_PATH%\Scripts" >nul
    if errorlevel 1 setx PATH "%PATH%;%INSTALL_PATH%\Scripts" /M >nul
    
  4. 【関連する外部サイト】

    【サイト内の関連ページ】

Visual Studio 2022 Build Toolsとランタイムのインストール

管理者権限でコマンドプロンプトを起動(手順:Windowsキーまたはスタートメニュー > cmd と入力 > 右クリック > 「管理者として実行」)し、以下を実行する。管理者権限は、wingetの--scope machineオプションでシステム全体にソフトウェアをインストールするために必要である。


REM Visual Studio 2022 Build Toolsとランタイムのインストール
winget install --scope machine Microsoft.VisualStudio.2022.BuildTools Microsoft.VCRedist.2015+.x64
set VS_INSTALLER="C:\Program Files (x86)\Microsoft Visual Studio\Installer\setup.exe"
set VS_PATH="C:\Program Files (x86)\Microsoft Visual Studio\2022\BuildTools"
REM C++開発ワークロードのインストール
%VS_INSTALLER% modify --installPath %VS_PATH% ^
--add Microsoft.VisualStudio.Workload.VCTools ^
--add Microsoft.VisualStudio.Component.VC.Tools.x86.x64 ^
--add Microsoft.VisualStudio.Component.Windows11SDK.22621 ^
--includeRecommended --quiet --norestart

PyTorch のインストール(Windows 上)

Windows 環境に PyTorch をインストールする手順を解説します.主に pip を使用する方法と Miniconda (conda) を使用する方法を紹介します.

1. 実行前の準備

インストール作業を行う前に,以下の準備と確認を行ってください.

2. PyTorch 公式サイトでのコマンド確認

【重要】 PyTorch のインストールコマンドは,OS,パッケージ管理ツール (pip/conda),Python バージョン,CUDA バージョンによって異なります.必ず以下の PyTorch 公式サイトで,ご自身の環境に合った最新のインストールコマンドを確認・実行してください.

以下の手順で示すコマンドは,特定の環境(例: CUDA 11.8)における一例です.

3. pip を使用したインストール

Python 標準のパッケージ管理ツール pip を使用する方法です.

(1) pip の更新 (任意)

python -m pip install --upgrade pip

(2) 既存の PyTorch 関連パッケージのアンインストール (推奨)
古いバージョン等がインストールされている場合に実行します.

python -m pip uninstall torch torchvision torchaudio
# 必要に応じて torchtext, xformers などもアンインストール
# python -m pip uninstall torchtext xformers

(3) PyTorch のインストール
【注意】 必ず公式サイトで生成したコマンドを使用してください.以下は CUDA 11.8 環境向けの 一例 です.

# 公式サイトで取得した pip install コマンドを実行
# 例 (CUDA 11.8):
python -m pip install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cu118

(4) インストールの確認

python -c "import torch; print(f'PyTorch Version: {torch.__version__}'); print(f'CUDA Available: {torch.cuda.is_available()}')"

CUDA Available: True と表示されれば,GPU が正しく認識されています (GPU 環境の場合).

4. Miniconda (conda) を使用したインストール

データサイエンス環境構築によく使われる Miniconda (または Anaconda) を使用している場合は,conda コマンドでもインストールできます.

注意点:
conda 環境では,PyTorch のような複雑な依存関係を持つライブラリの場合,pip よりも依存関係の問題が発生することがあります.問題が発生した場合は,pip を使用したインストール(セクション3)を試すことを検討してください.

(1) Miniconda Prompt (または Anaconda Prompt) の起動
管理者として実行で Miniconda Prompt を起動します.

(2) PyTorch のインストール
【注意】 必ず公式サイトで Package に Conda を選択し,生成されたコマンドを使用してください.以下は CUDA 11.8 環境向けの 一例 です.

# 公式サイトで取得した conda install コマンドを実行
# 例 (CUDA 11.8):
conda install pytorch torchvision torchaudio pytorch-cuda=11.8 -c pytorch -c nvidia

-c pytorch -c nvidia は,PyTorch と NVIDIA の公式 conda チャネルを指定しています.

(3) インストールの確認

python -c "import torch; print(f'PyTorch Version: {torch.__version__}'); print(f'CUDA Available: {torch.cuda.is_available()}')"

関連情報

サイト内の関連ページ

関連する外部ページ

日本語言語モデルJapanese StableLM Base Alpha 7Bを Windows で動かす

Japanese StableLM Base Alpha 7B の HuggingFace の公式ページ: https://huggingface.co/stabilityai/japanese-stablelm-base-alpha-7b に記載の手順をそのまま動かす.

  1. Windows で,管理者権限コマンドプロンプトを起動(手順:Windowsキーまたはスタートメニュー > cmd と入力 > 右クリック > 「管理者として実行」)。
  2. sentencepiece, einops のインストール
    pip install sentencepiece einops
    
  3. transformers のインストール
    pip install transformers
    
  4. Japanese StableLM Base Alpha 7B の HuggingFace の公式ページ: https://huggingface.co/stabilityai/japanese-stablelm-base-alpha-7b に記載の手順をそのまま動かす.
    1. まず python を起動
      python
      
    2. Japanese StableLM Base Alpha 7B の HuggingFace の公式ページ: https://huggingface.co/stabilityai/japanese-stablelm-base-alpha-7bのプログラムをそのまま実行
    3. 実行結果の確認

      エラーメッセージが出ていないことを確認

日本語言語モデルJapanese StableLM Base Alpha 7B に文章を与え,回答を得るプログラム

このプログラムは,ユーザーからのメッセージを受け取り,それを 日本語言語モデルJapanese StableLM Base Alpha 7B に与え,画面に表示する. 履歴は保存され,画面で過去の履歴も閲覧可能である.

GUIの構築には,Tkinterライブラリを用いている. 履歴の表示にはリストボックスとスクロールバーを用い,ユーザーからのメッセージ入力はテキストフィールドで受け付け,そのメッセージの送信のために「Send」ボタンを配置している.

  1. Windows で,コマンドプロンプトを実行
  2. エディタを起動
    cd /d c:%HOMEPATH%
    notepad stablelm.py
    
  3. エディタで,次のプログラムを保存

    Japanese StableLM Base Alpha 7B の HuggingFace の公式ページ: https://huggingface.co/stabilityai/japanese-stablelm-base-alpha-7bのプログラムに機能を加えたものである.

    import torch
    from transformers import LlamaTokenizer, AutoModelForCausalLM
    import tkinter as tk
    import textwrap
    
    WIDTH = 50
    
    tokenizer = LlamaTokenizer.from_pretrained("novelai/nerdstash-tokenizer-v1")
    
    model = AutoModelForCausalLM.from_pretrained(
        "stabilityai/japanese-stablelm-base-alpha-7b",
        trust_remote_code=True,
    )
    model.half()
    
    if torch.cuda.is_available():
        model = model.to("cuda")
    
    def do_chat(user_message):
        input_ids = tokenizer.encode(
            user_message.strip(),
            add_special_tokens=False,
            return_tensors="pt"
        )
        # this is for reproducibility.
        # feel free to change to get different result
        seed = 23
        torch.manual_seed(seed)
        tokens = model.generate(
            input_ids.to(device=model.device),
            max_new_tokens=128,
            temperature=1,
            top_p=0.95,
            do_sample=True,
        )
        out = tokenizer.decode(tokens[0], skip_special_tokens=False)
        return out
    
    def send_message():
        user_message = entry_field.get("1.0", tk.END)
        for part in user_message.split('\n'):
            wrapped_message = textwrap.wrap(part, width=50)
            for line in wrapped_message:
                chat_history.insert(tk.END, "Q: " + line)
        entry_field.delete("1.0", tk.END)
        ai_message = "A: " + do_chat(user_message)
        for part in ai_message.split('\n'):
            wrapped_ai_message = textwrap.wrap(part, width=50)
            for line in wrapped_ai_message:
                chat_history.insert(tk.END, line)
    
    root = tk.Tk()
    root.title("Chat with AI")
    
    frame = tk.Frame(root)
    scroll = tk.Scrollbar(frame)
    chat_history = tk.Listbox(frame, yscrollcommand=scroll.set, width=2 * WIDTH)
    scroll.pack(side=tk.RIGHT, fill=tk.Y)
    chat_history.pack(side=tk.LEFT, fill=tk.BOTH, expand=True)
    frame.pack()
    
    entry_field = tk.Text(root, width=2 * WIDTH, height=5)
    entry_field.pack()
    send_button = tk.Button(root, text="Send", command=send_message)
    send_button.pack()
    
    root.mainloop()
    
  4. Python プログラムの実行

    Python プログラムの実行

    Python 開発環境(Jupyter Qt Console, Jupyter ノートブック (Jupyter Notebook), Jupyter Lab, Nteract, Spyder, PyCharm, PyScripterなど)も便利である.

    Python のまとめ: 別ページ »にまとめ

    プログラムを stablelm.pyのようなファイル名で保存したので, 「python stablelm.py」のようなコマンドで行う.

    python stablelm.py
    
  5. 実行の結果,モデルの読み込みが始まる(少し時間がかかる).その後,画面が開く,

    画面下部の枠にメッセージを入力し,「Send」ボタンをクリックすると,画面上部で日本語言語モデルからの回答を確認できる.画面上部は履歴になっており,スクロールバーでスクロールできる.

上のプログラムは, stabilityai/japanese-stablelm-base-alpha-7b を使うようにしています.

対話のための学習が行われている stabilityai/japanese-stablelm-instruct-alpha-7b の方を使う場合には,利用者自身でライセンスを注意深く確認することをお薦めします.あわせて HuggingFace のログイン等を行う必要があるでしょう.