Meditron-7B 医療特価型LLMを導入する

生成AI関連

事前準備

モデルのダウンロードにはいくつかのライブラリが必要です。TensorFlowとPyTorchをインストールしていない場合は、以下のコマンドでインストールします。

# TensorFlowのインストール 
pip install tensorflow  

# PyTorchのインストール(CUDA付き)
pip install torch torchvision torchaudio

# Transformersとpipelineのインストール
pip install transformers pipeline

モデルの利用規約の同意

以下のサイトにアクセスして利用規約に同意する必要があります。

epfl-llm/meditron-7b · Hugging Face
We’re on a journey to advance and democratize artificial intelligence through open source and open science.

Hugging Faceのアクセストークンを取得

Hugging FaceのAPIやライブラリを利用するには、アクセストークンが必要です。

  1. Hugging Faceにログイン: まず、Hugging Faceにアクセスして、アカウントにログインします。
  2. プロフィールアイコンの選択: ログイン後、右上のプロフィールアイコンをクリック
  3. 設定へのアクセス: ドロップダウンメニューから「Settings」を選択します。
  4. アクセストークンの確認: 「Access Tokens」セクションを探し、そこでアクセストークンを確認することができます。必要に応じて新しいトークンを生成することも可能です。

このトークンは安全に保管し、他人と共有しないよう注意してください。

Pythonのインタラクティブモードで実行

先ほど取得したアクセストークンを利用してpythonのインタラクティブモードでモデルをダウンロードします。
まずはpythonのインタラクティブモードを使えるようにします。

  1. コマンドプロンプトを開く:スタートメニューから「cmd」と検索し、コマンドプロンプトを開きます。
  2. pythonと入力してインタラクティブモードを起動:コマンドプロンプトにpythonと入力し、Enterキーを押します。これでPythonのインタラクティブシェルが起動します。
  3. コードの実行:ここで、実行したいPythonコードを一行ずつ入力します。各行を入力後、Enterキーを押すと、その行が即座に実行され、結果が表示されます。以下のコードを実行してHugging Faceにログイン
from huggingface_hub import login
login("hf_xxxxxx") # アクセストークンを渡す  
  1. モデルをダウンロード:続けて次のコードを実行するとモデルをダウンロードできます。
from transformers import pipeline
pipe = pipeline("text-generation", model="epfl-llm/meditron-7b")

ダウンロードしたモデルは必要に応じて適切なフォルダに移動させておきます。

モデルは以下の場所にダウンロードされます。

C:\Users\ユーザー名\.cache\huggingface\hub\models--epfl-llm--meditron-7b\snapshots\ランダムな文字列\

個人的には各種モデルを入れておいている以下にコピーして利用しています。

例)C:\llm\meditron-7b

サンプルコード

以下はMeditron-7Bでテキストを生成するサンプルコードです。

from transformers import AutoTokenizer, AutoModelForCausalLM
import torch

try:
    # モデルとトークナイザーの読み込み
    tokenizer = AutoTokenizer.from_pretrained("C:/llm/meditron-7b/")
    model = AutoModelForCausalLM.from_pretrained("C:/llm/meditron-7b/")

    # GPUが利用可能か確認
    if torch.cuda.is_available():
        device = torch.device("cuda")
        print("GPUを使用します。")
    else:
        device = torch.device("cpu")
        print("GPUは利用できません。CPUを使用します。")

    # モデルを適切なデバイスに移動
    model.to(device)

    text = "自己紹介をして下さい。"

    # 特殊トークンを追加して入力を準備
    inputs = tokenizer(text, add_special_tokens=True, return_tensors='pt').to(model.device)

    with torch.no_grad():
        output_ids = model.generate(
            **inputs,
            max_new_tokens=512,  # 生成するトークンの最大数
            do_sample=True,  # サンプリングベースの生成を有効化
            temperature=0.9,  # 生成のランダム性を調整
            top_p=0.92,  # 生成におけるトークンの選択範囲を制御
            pad_token_id=tokenizer.pad_token_id,
            bos_token_id=tokenizer.bos_token_id,
            eos_token_id=tokenizer.eos_token_id,
            repetition_penalty=1.2,  # 繰り返しを減らすためのペナルティ
        )

    output = tokenizer.decode(output_ids.tolist()[0])
    print(output)

except Exception as e:
    print(f"エラーが発生しました: {e}")

これでMeditron-7Bを用いたテキスト生成ができるようになります。パラメータを調整しながら目的に合わせた生成が可能です。

パラメータの説明

生成時のパラメータを適切に設定することが重要です。

- `add_special_token=True` 開始と終了のトークンを追加
- `max_new_tokens=512` 生成する最大トークン数  
- `temperature=0.1` 生成のランダム性を制御
- `pad_token_id` 等の指定で生成を細かく制御
- `repetition_penalty=1.1` 繰り返しを減らす

コメント

タイトルとURLをコピーしました