🍷

【llama.cpp】Llama-2-70BとXwin-LM-70Bを出力を比較する。

2023/09/22に公開

はじめに

Xwin-LM-70B が、オープンな LLM として初めて GPT-4 を超える性能を叩き出したとして注目を集めています。[1]また、早速 Xwin-LM-70B を量子化したモデルが TheBloke に公開されています。

https://huggingface.co/TheBloke/Xwin-LM-70B-V0.1-GGUF

この記事では、llama.cpp を用いて Llama-2-70B と Xwin-LM-70B の出力結果の比較を行います。

Llama.cpp の環境構築については以下のスクラップいまとめました。

https://zenn.dev/derbuihan/scraps/e2583efca38717

私の PC のスペック[2]

  • i7 13700K
  • 3090 24GB
  • DDR5 128GB

質問 1

「素因数分解について説明してください。」

Llama-2-70B-Chat Q2

User: 素因数分解について説明してください。

Llama: Sure! In number theory, the prime factorization of an integer is the decomposition of that integer into its constituent prime factors. For example, the prime factorization of 24 would be 2 × 2 × 2 × 3, because those are the prime numbers that multiply together to equal 24.

英語で出力されたので機械翻訳した。

もちろん! 数論では、整数の素因数分解は、その整数をその構成要素である素因数に分解することです。 たとえば、24 を素因数分解すると 2 × 2 × 2 × 3 になります。これらは掛け合わせると 24 になる素数であるためです。

Xwin-LM-70B Q2

User: 素因数分解について説明してください。

Llama: 素因数分解(そいんすうぶんかい、prime factorization)とは、自然数をその約分できない倍数(素数)の積として表す方法です。これは、数学における基本的な概念の一つであり、多くの計算やアルゴリズムに応用されます。

例えば、12 の素因数分解は以下のように行われます:

  1. 12 ÷ 2 = 6
  2. 6 ÷ 2 = 3
  3. 3 ÷ 3 = 1

したがって、12 の素因数分解は次のように得られます。

12 = 2 × 2 × 3

この結果を素因数過程と呼びます。素因数分解は、自然数をその「原子」とも言える素数に分解することで、数の内部構造を理解する上で重要です。

素因数分解は、クンマーの定理やレオンハルト・オイラーの証明において、大きな役割を果たします。また、コンピュータ科学や暗号技術においても、素因数分解アルゴリズムは重要な役割を果たしています。

Xwin-LM-70B は日本語で回答が返ってきます。

質問 2

「コンピューターの基本的な構成要素は何ですか?」

Llama-2-70B-Chat Q2

User: コンピューターの基本的な構成要素は何ですか?

Llama: コンピューターの基本的な構成要素として、以下のようなものがあります。

  1. CPU (Central Processing Unit) - プログラムを実行するために必要な処理を行います。
  2. RAM (Random Access Memory) - プログラムやデータを一時的に保存するために使用されます。
  3. ROM (Read-Only Memory) - ファームウェアや boot loader など、不揮 � 性の情報を格納するために使用されます。
  4. Storage Device - データやプログラムを長期間保存するために使用されます。例えば HDD や SSD などがあります。
  5. Input/Output Devices - ユーザーとコンピューターとの間で情報をやり取りするために使用されます。例えばキーボード、マウス、モニターなどがあります。
  6. Bus - 各部品間で情報をやり取りするために使用されます。例えば PCI Express や AGP などがあります。
  7. Power Supply - コンピューターに必要な電力を供給するために使用されます。
  8. Motherboard - 上記の全ての部品を接続し、

Xwin-LM-70B Q2

User: コンピューターの基本的な構成要素は何ですか?

Llama: コンピューターの基本的な構成要素について説明します。コンピューターは、以下の主要な部品から構成されています。

  1. CPU (Central Processing Unit): プロセッサとも呼ばれる。コンピューターの中心的な処理装置であり、命令を実行し、データを操作します。
  2. RAM (Random Access Memory): システムメモリとも呼ばれる。コンピューターが現在処理しているデータやプログラムを一時的に保存するための記憶装置です。
  3. ROM (Read Only Memory): ROM は、コンピューターが起動した際に必要な基本的な情報を格納しておくための記憶装置です。通常、書き込みができず、読み取り専用です。
  4. 入力機器: ユーザーがコンピューターへ情報を入力するための機器です。キーボード、マウス、トラックパッド、タッチスクリーンなどがあります。
  5. 出力機器: コンピューターから得られる情報を表示するための機器です。モニ

質問 3

「素因数分解する Python コードを書いて」

Llama-2-70B-Chat Q2

User: 素因数分解する Python コードを書いて

Llama: Sure! Here's an example Python code for prime factorization using the Sieve of Eratosthenes algorithm:

def sieveoferatosthenes(n):
    if n <= 1:
        return []
    sieve = [True] * (n + 1)
    sieve[0] = sieve[1] = False
    for p in range(2, int(n  0.5) + 1):
        if sieve[p]:
            for i in range(p * p, n + 1, p):
                sieve[i] = False
    return [p for p in range(2, n + 1) if sieve[p]]

This function takes an integer n as input and returns a list of prime factors of n.

Xwin-LM-70B Q2

User: 素因数分解する Python コードを書いて

Llama: 以下は、与えられた整数を素因数分解する Python コードです。このアルゴリズムは、trial division と呼ばれる方法を使用しています。

def prime_factors(n):
    factors = []

    for i in range(2, n//2 + 1):
        if n % i == 0:
            factors.append(i)s
            n //= i
            break

    return factors

def main():
    number = int(input("Enter an integer: "))
    factors = prime_factors(number)
    print("Prime factors of", number, ":", ", ".join([str(factor) for factor in factors]))

if name == "main":
    main()

このコードは、ユーザーから整数を入力し、その数の素因子を表示します。prime_factors 関数は、指定された整数を素因数分解し、結果をリストで返します。main 関数は、ユーザーから整数を取得し、その素因数を計算して表示します。

Xwin-LM-70B の方が親切なコードが出力されました。

終わりに

Xwin-LM-70B に日本語で質問すると、日本語で答えが返ってきました。また、全体的に Xwin-LM-70B の回答は親切な感じを受けました。Falcon-180B-chat-Q2 とも比較しましたが、少なくとも日本語で使用する場合については Xwin-LM-70B の方が優れていると感じました。このモデルに日本語のトークンを追加して学習することで、さらに使いやすくなるのではないかと思います。この点については今後の発展に期待したいです。

次は、open-interpreter から使ってみたいと思います。

脚注
  1. https://tatsu-lab.github.io/alpaca_eval/ ↩︎

  2. https://zenn.dev/derbuihan/articles/928ae5f279afbc ↩︎

Discussion