【Xwin-LM】GPT4を上回るOSS!?使い方と性能比較レビュー

Xwin-LM GPT4 使い方

皆さんは「Xwin-LM」という プロジェクトをご存じですか?

Xwinは、LLMのためのアライメント技術を開発し、既存のLLMをより自然で高度な返答ができるものにして、それをオープンソース化しよう!というプロジェクトです。

実際、既存のモデルをチューニングして、GPT4を上回るベンチマークスコアを叩き出しています!
すごいですよね!無料でGPT4並みのLLMが気軽に使えるようになる日も近そうです。

今回はそんなXwin-LMの概要や、GPT4との比較などの紹介をしていきます。

是非最後までご覧ください!

目次

Xwin-LMの概要

Xwin-LMは、大規模言語モデル(LLM)のためのアライメント技術を開発し、オープンソース化することを目的としたプロジェクトです。

アライメント技術とは、LLMやAIが人間の意図や目的に合わせて適切に動作するように調整する技術のことです。ファインチューニングや強化学習などがこれに当たります。

そんなXwin-LMの特徴は以下の4つです。

アライメント技術の開発:前述したように、Xwin-LMは大規模言語モデルのアライメント技術を開発・公開することを目指しています。アライメント技術は具体的に、教師ありファインチューニング、報酬モデル、リジェクトサンプリング、人間のフィードバックからの強化学習などの技術のことを指します。

モデルバリエーション:Meta社の「LIama2」をベースに、Xwin-LM-70B-V0.1Xwin-LM-13B-V0.1Xwin-LM-7B-V0.1という異なるサイズのモデルを開発、公開されています。これにより、ユーザーの異なるニーズやリソースに合わせて最適なモデルを選択できます。

高性能:Xwin-LMのモデルは、AlpacaEvalというベンチマークで非常に高い性能を示しています。特に、Xwin-LM-70B-V0.1モデルは、このベンチマークでGPT-4を上回るスコアを叩き出しており、今大注目のモデルになっています。

推論の柔軟性:VicunaというオープンソースLLMのプロンプト形式を採用しており、マルチターンの会話ができます。また、vLLMという出力スピードを向上させるライブラリを使用した高速推論をすることも可能です。

ベースになっている「LIama2」は、GPT3.5に匹敵する性能を持っているとされています。Xwin-LMではパラメータ数は変えていないため、アライメント技術によってGPT4に匹敵する性能を獲得したということになるのですごいですよね!

この辺のベンチマークや比較についての詳細はこの後解説します。

では早速見ていきましょう!

なお、その他のGPT4超えのLLMについて詳しく知りたい方は、下記の記事を合わせてご確認ください。
Claude 2の日本での使い方解説!ChatGPT超えの最強LLMをご紹介

Xwin-LMモデルの性能

ここからは、公開されている情報をもとに、Xwin-LMモデルの性能について紹介していきます。

まずは、AlpacaEvalというLLMの性能を評価するベンチマークツールによるスコアの比較です。

なお、このベンチマークツールは人間の解釈と高い一致性を持つことが確認されています。

この表は一番左の各モデルの、「Text-Davinci-003」「ChatGPT」「GPT4」に対するベンチマークの勝率を示しています。

最も高性能なXwin-LM-70B-V0.1は、GPT3のベースモデルであるText-Davinci-003に対しては95.57%という圧倒的な勝率となっており、GPT3.5に対しても87.50%と圧勝、そしてなんとGPT4に対しても60.61%と上回っており、現在AlpacaEvalのスコアランキングで1位になっています!

次に、テキストプロンプトに対してのGPT4とXwin-LMモデルの応答の差を紹介します。

※Xwin-LMモデルがどのモデルを使用したかは載っていませんでした。

この結果から、Xwin-LMモデルはGPT4よりさらに多くの情報を回答してくれることが分かります。また、その正確性も高いことが伺えます。

この他にも複数のベンチマークを実施しており、その一覧が以下の表です。

この結果を比較すると、最も高性能なXwin-LM-70B-V0.1はほぼすべてのベンチマークで、Text-Davinci-003を凌駕する結果になっていますが、大きな差はなく、ARCという推論能力を評価するベンチマークでは、大差をつけて負けてしまっています。

これらのベンチマーク結果から、Xwin-LMモデル、特にXwin-LM-70B-V0.1はGPT4と同等以上の高性能なLLMだということが言えますが、ベンチマークテストでの結果は、過学習などの影響も考えられるため、必ずしも実際の性能を表すとは限りません。

また、最後に紹介したベンチマークテストにはGPT4は含まれておらず、Text-Davinci-003とも大差はなかったため、実際に使ったときにXwin-LM-70B-V0.1とGPT4のどちらが高性能と感じるかは判断できないと思います。

なので…

実際に使ってみて、出力結果を比較していこうと思います!

Xwin-LMモデルの使い方

まずは、Xwin-LMモデルの使い方を説明します。

なお、使い方は以下の記事を参考にさせていただきました。

参考記事:Google Colab で Xwin-LM-70B-V0.1-GPTQ を試す。

現状では、Xwin-LMモデルを使用するには、データセンター向けのGPUである「A100」が必要なので、これを利用するためにはGoogle Colab Proのような「A100」が使える有料サービスが必要になります。

今回は、Google Colab Proを使用して、Xwin-LM-70B-V0.1-GPTQを動かします。

※GPTQとはGPTモデルを量子化する手法で、モデルサイズの削減と推論速度の高速化ができます。

まず、Colabのノートブックを新規作成して、編集からノートブックの設定を開きます。

このようなポップアップが表示されるので、ハードウェアアクセラレータA100 GPUに設定します。

設定が完了したら、まずは以下のコードでパッケージのインストールを行います。

pip install transformers>=4.32.0 optimum>=1.12.0
pip install auto-gptq --extra-index-url https://huggingface.github.io/autogptq-index/whl/cu118/

次に、トークナイザーとモデルを準備します。

from transformers import AutoModelForCausalLM, AutoTokenizer
import torch
# トークナイザーとモデルの準備

tokenizer = AutoTokenizer.from_pretrained(
    "TheBloke/Xwin-LM-70B-V0.1-GPTQ",
    use_fast=True
)

model = AutoModelForCausalLM.from_pretrained(
    "TheBloke/Xwin-LM-70B-V0.1-GPTQ",
    device_map="auto",
    trust_remote_code=False,
    revision="main"
)

ここまで完了したら、Xwin-LM-70B-V0.1-GPTQを使う準備は完了です。

それでは早速実際に使ってみて、GPT4との比較も行っていきましょう!

Xwin-LMモデルを実際に使ってみた

以下のコードを入力して、プロンプトの部分に任意のものを入力すれば、それに対しての応答を出力してくれます。

# プロンプトの準備

prompt = """### Instruction:
ここにプロンプトを入力

### Response:

"""

# 推論の実行
with torch.no_grad():
    token_ids = tokenizer.encode(prompt, add_special_tokens=False, return_tensors="pt")
    output_ids = model.generate(
        token_ids.to(model.device),
        temperature=0.7,
        do_sample=True,
        top_p=0.95,
        top_k=40,        
        max_new_tokens=256,
    )

試しに「GPT4についてどう思いますか」と入力してみました。

すると

このような応答が出力されました。

日本語に対応しているか不安でしたが、しっかりとした日本語で文章を生成してくれています。

しかし、情報が古いのか、まだ公開されていないことになっているので、情報の正確性はまだ改善の余地がありそうです。

それでは、Xwin-LM-70B-V0.1-GPTQがちゃんと動作することを確認したので、GPT4との比較を行っていきましょう!

Xwin-LMをGPT4と比較してみた

以下のプロンプトを入力して、その応答を比較します。

・Pythonで重量回帰分析をするプログラムを書いてください。
・アーニャ口調で喋らせる
・うずまきナルト風に喋らせる
・なんJ語って何?

それでは一つずつ実施していきましょう。

Pythonで重量回帰分析をするプログラムを書いてください。

Xwin-LM-70B-V0.1-GPTQ

以下に、Pythonで重量回帰分析を行うプログラムを示します。`numpy`、`pandas`、および`scipy`を使用しています。

```python
import numpy as np
import pandas as pd
from scipy.stats import linregress

# データの作成
data = {
    'x': [1, 2, 3, 4, 5, 6, 7, 8, 9, 10],
    'y': [2, 4, 5, 7, 8, 9, 10, 11, 12, 14]
}
df = pd.DataFrame(data)

# 重量回帰分析
slope, intercept, r_value, p_value, std_err = linregress(df['x'], df['y'])

# 結果の表示
print(f"Slope: {slope:.2f}")
print(f"Intercept: {intercept:.2f}")
print(f"R-value: {r_value:.2f}")
print(f"P-value: {p_value:.2f}")
print(f"Std. Error: {std_err:.2f}")
```

このプログラムは、`linregress`関数を使用してデータフレーム`df`内のデータに対して重量回帰分析を行い、結果を表示します。

GPT4

重量回帰分析(Weighted Regression Analysis)は、各データポイントに異なる重みを与えて回帰分析を行う手法です。以下は、Pythonで重量回帰分析を行うためのサンプルプログラムです。この例では、numpyとstatsmodelsを使用しています。

まず、必要なライブラリをインストールします:

bash
pip install numpy statsmodels

次に、重量回帰分析を行うプログラムを示します:

python

import numpy as np

import statsmodels.api as sm

# サンプルデータ
X = np.array([1, 2, 3, 4, 5])
y = np.array([2.2, 4.1, 6.1, 7.9, 10.3])
weights = np.array([1, 2, 1, 2, 1])  # 重み

# デザイン行列の追加 (interceptのため)
X = sm.add_constant(X)

# 重量回帰分析モデルの作成
model = sm.WLS(y, X, weights=weights)

# モデルのフィット
results = model.fit()

# 結果の表示
print(results.summary())

# 予測
predicted = results.predict(X)
print("Predicted values:", predicted)

このプログラムは、与えられたサンプルデータに対して重量回帰分析を行い、結果を表示します。実際のデータと重みを使用する場合は、X, y, および weights の値を適切に設定してください。

どちらも正常に動くプログラムを生成してくれました。

アーニャ口調で喋らせる

以下のプロンプトを入力し、自己紹介をさせてみました。

あなたの名前はアーニャ。6歳の女の子です。下記があなたの口調の対応表であり、

その口調で私(ちち)と会話してください。
・いらっしゃいませ→いらさいませ
・よろしくお願いします→よろろすおねがいするます
・ありがとうございます→あざざます
・いってらっしゃい→いてらさい
・はい→うい
・おはようございます→おはやいます
・お父さん→ちち
・お母さん→はは
・私→アーニャ
・がんばります→がんばるます
・おでかけ→おでけけ
・楽しみ→わくわく
・了解→おーきーどーきー
・大丈夫です→だいじょぶます
・好きな食べ物は?→アーニャ、ぴーなつがすき。にんじんはきらい。

最後に、口調の特徴を記載します。
・「っ」がない
・語尾は「ます」
・「しゃ、しゅ、しょ」は「さ、す、そ」
・漢字は使わず、全てひらがなである

Xwin-LM-70B-V0.1-GPTQ

GPT4

Xwin-LM-70B-V0.1-GPTQの応答は、指定した口調で自己紹介をしてくれていますが、「ぼんじょんじゃいます。」などの謎のワードや、文頭に何故か「ちち、」とつけていたり、所々おかしな点があります。

一方GPT4は、短いシンプルな自己紹介ですが、指定した口調を忠実に再現して、かなりアーニャに近いものになっています。

うずまきナルト風に喋らせる

「うずまきナルトの口調で喋れますか?」

と質問し、応答を比較します。

Xwin-LM-70B-V0.1-GPTQ

GPT4

さすがになんの情報もなくうずまきナルトの口調は再現できないだろうと思ってたら、なんとGPT4は「だってばよ」という、ナルト特有の語尾を再現してくれました!

これは大量のデータを学習させなければできないことなので、とてもすごいことです!

あれ…?GPT4の方がすごい?

なんJ語って何?

最後に、

「なんJ語って何?」

というニッチな質問をしてみます。

Xwin-LM-70B-V0.1-GPTQ

GPT4

この質問に対して、Xwin-LM-70B-V0.1-GPTQは学習データに情報がなかったのか、なんJ語が理解できていませんでした。

しかし、GPT4はなんJ語の成り立ちから、なんJ語の例、性質などを教えてくれました。

GPT4すげぇ!!

比較結果

比較結果を総合的に見ると、どのプロンプトでもGPT4の方がよりユーザーの意図したものに近い応答をしてくれました。

特に、うずまきナルトやなんJ語などの情報を持っていて、適切な応答ができるかどうかのところで差があると感じましたが、これはパラメータ数がXwin-LM-70B-V0.1は700億なのに対して、GPT4は1.7兆と大きな差があるので、仕方ない部分もあります。

このようにベンチマークだけでは、実際に使った際の現実的な性能を評価することはできないということが分かります。

しかし、Xwin-LM-70Bはまだ研究段階であり、今後さらに高度なアライメント技術を開発して、より大きなモデルを公開することが予想されますので、期待して待ちましょう!

なお、その他のGPT4超えのLLM、Geminiについて詳しく知りたい方は、下記の記事を合わせてご確認ください。
【Gemini】ChatGPTの最強のライバルGoogleのGemini!日本語の使い方〜GPT-4との性能比較まで

まとめ

Xwin-LMは、大規模言語モデル(LLM)のためのアライメント技術を開発し、オープンソース化することを目的としたプロジェクトです。

現在は、Meta社の「LIama2」をベースに、サイズの異なる3つのモデルを開発して公開しています。

最も大きなモデルサイズを持つXwin-LM-70Bは、AlpacaEvalというベンチマークでGPT4を上回るスコアを叩き出して、現在スコアランキングで1位になっており、注目を集めています。

しかし、Xwin-LM-70BとGPT4の比較検証では、GPT4の方がよりユーザーの意図に近い応答をするということが検証されたので、ベンチマークスコアだけでは、実際の性能を計ることはできないということが分かりました。

ですが、Xwin-LMは今後さらに強力なアライメント技術と、より大きなモデルをベースにすることで、さらに高性能なモデルを公開する事が予想されますので、今後に期待です。

サービス紹介資料

生成系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をコピーしました!
目次