ジョジョの奇妙な ELYZA-japanese-Llama-2-7b

この記事は、[「ジョジョの奇妙な ELYZA-japanese-Llama-2-7b-instruct」](https://qiita.com/maskot1977/items/f75abdbaccdc2a20da80)とペアになる記事です。コードはほとんど同じで、ELYZA-japanese-Llama-2-7b-instruct の代わりに ELYZA-japanese-Llama-2-7b を使ったことだけが「違い」です。実行結果を比較しながら読んでいただくと、ちょっとは面白いのではないかと期待しています。

プロンプトを除き、実行コードは下記の記事のをそのまま使いました。大変勉強になりました。ありがとうございます。

https://note.com/npaka/n/nbb94b45f47a5

今回も例によってジョジョネタで徐々に様子を見ていこうと思います。

```python
# パッケージのインストール
!pip install transformers accelerate bitsandbytes
```



```python
import torch
from transformers import AutoModelForCausalLM, AutoTokenizer

# トークナイザーとモデルの準備
tokenizer = AutoTokenizer.from_pretrained("elyza/ELYZA-japanese-Llama-2-7b")
model = AutoModelForCausalLM.from_pretrained(
    "elyza/ELYZA-japanese-Llama-2-7b", torch_dtype=torch.float16, device_map="auto"
)
```


    Downloading (…)lve/main/config.json:   0%|          | 0.00/632 [00:00<?, ?B/s]


    2023-08-30 23:30:50.730888: I tensorflow/core/util/port.cc:110] oneDNN custom operations are on. You may see slightly different numerical results due to floating-point round-off errors from different computation orders. To turn them off, set the environment variable `TF_ENABLE_ONEDNN_OPTS=0`.
    2023-08-30 23:30:50.773222: I tensorflow/core/platform/cpu_feature_guard.cc:182] This TensorFlow binary is optimized to use available CPU instructions in performance-critical operations.
    To enable the following instructions: AVX2 AVX512F AVX512_VNNI FMA, in other operations, rebuild TensorFlow with the appropriate compiler flags.
    2023-08-30 23:30:51.669094: W tensorflow/compiler/tf2tensorrt/utils/py_utils.cc:38] TF-TRT Warning: Could not find TensorRT



    Downloading (…)model.bin.index.json:   0%|          | 0.00/26.8k [00:00<?, ?B/s]



    Downloading shards:   0%|          | 0/2 [00:00<?, ?it/s]



    Downloading (…)l-00001-of-00002.bin:   0%|          | 0.00/9.98G [00:00<?, ?B/s]



    Downloading (…)l-00002-of-00002.bin:   0%|          | 0.00/3.50G [00:00<?, ?B/s]



    Loading checkpoint shards:   0%|          | 0/2 [00:00<?, ?it/s]



    Downloading (…)neration_config.json:   0%|          | 0.00/154 [00:00<?, ?B/s]

さて実験開始。

# 究極生命体カーズとは？

```python
# プロンプトの準備
prompt = """

 

あなたは誠実で優秀な日本人のアシスタントです。



究極生命体カーズとは？ 
"""

# 推論の実行
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),
        max_new_tokens=256,
        pad_token_id=tokenizer.pad_token_id,
        eos_token_id=tokenizer.eos_token_id,
    )
output = tokenizer.decode(
    output_ids.tolist()[0][token_ids.size(1) :], skip_special_tokens=True
)
print(output)
```

    /home/kotera/.local/lib/python3.10/site-packages/transformers/generation/utils.py:1417: UserWarning: You have modified the pretrained model configuration to control generation. This is a deprecated strategy to control generation and will be removed soon, in a future version. Please use a generation configuration file (see https://huggingface.co/docs/transformers/main_classes/text_generation )
      warnings.warn(


    あなたは誠実で優秀な日本人のアシスタントです。
    究極生命体カーズとは？
    あなたは誠実で優秀な日本人のアシスタントです。
    究極生命体カーズとは？
    あなたは誠実で優秀な日本人のアシスタントです。
    究極生命体カーズとは？
    あなたは誠実で優秀な日本人のアシスタントです。
    究極生命体カーズとは？
    あなたは誠実で優秀な日本人のアシスタントです。
    究極生命体カーズとは？
    あなたは誠実で優秀な日本人のアシスタントです。
    究極生命体カーズとは？
    あなた



```python
# プロンプトの準備
prompt = """

 究極生命体カーズとは？ 
"""

# 推論の実行
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),
        max_new_tokens=256,
        pad_token_id=tokenizer.pad_token_id,
        eos_token_id=tokenizer.eos_token_id,
    )
output = tokenizer.decode(
    output_ids.tolist()[0][token_ids.size(1) :], skip_special_tokens=True
)
print(output)
```

    究極生命体カーズ（きゅうきょくせいめいたいカーズ、英: Ultimate Lifeform-C）は、1997年に発売されたアーケードゲーム『鉄拳』シリーズの最新作『鉄拳タッグトーナメント2』に登場する架空のキャラクター。
    『鉄拳タッグトーナメント2』の最終ボス。
    『鉄拳タッグトーナメント2』の最終ボス。
    『鉄拳タッグトーナメント2』の最終ボス。
    『鉄拳タッグトーナメント2』の最終ボス。
    『鉄拳タッグトーナメント2』の最終ボス。
    『鉄拳タッグトーナメント2』の最終ボス。
    『鉄拳タッグトーナメント



```python
# プロンプトの準備
prompt = """究極生命体カーズとは？"""

# 推論の実行
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),
        max_new_tokens=256,
        pad_token_id=tokenizer.pad_token_id,
        eos_token_id=tokenizer.eos_token_id,
    )
output = tokenizer.decode(
    output_ids.tolist()[0][token_ids.size(1) :], skip_special_tokens=True
)
print(output)
```

    
    カーズの概要 カーズは、2006年にアメリカで公開されたディズニー・ピクサーの長編アニメーション映画です。
    監督はジョン・ラセター、製作はピクサー・アニメーション・スタジオです。
    ...
    『トイ・ストーリー』の概要 『トイ・ストーリー』は、1995年にアメリカで公開されたディズニー・ピクサーの長編アニメーション映画です。
    監督はジョン・ラセター、製作はピクサー・アニメーション・スタジオです。
    ...
    『モンスターズ・インク』の概要 『モンスターズ・インク』は、2001年


感想：プロンプトを変化させたときの影響が大きい気がする

# おまえは今まで食ったパンの枚数をおぼえているのか？

```python
# プロンプトの準備
prompt = "おまえは今まで食ったパンの枚数をおぼえているのか？"

# 推論の実行
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),
        max_new_tokens=256,
        pad_token_id=tokenizer.pad_token_id,
        eos_token_id=tokenizer.eos_token_id,
    )
output = tokenizer.decode(
    output_ids.tolist()[0][token_ids.size(1) :], skip_special_tokens=True
)
print(output)
```

    
    それとも、食ったパンの枚数をおぼえているのか？
    それとも、食ったパンの枚数をおぼえているのか？
    それとも、食ったパンの枚数をおぼえているのか？
    それとも、食ったパンの枚数をおぼえているのか？
    それとも、食ったパンの枚数をおぼえているのか？
    それとも、食ったパンの枚数をおぼえているのか？
    それとも、食ったパンの枚数をおぼえているのか？
    それとも、食ったパンの枚数をおぼえているのか？
    それとも、食ったパンの枚数をおぼえているのか？
    それと

感想： A or A は A ですよ

# わたしってどうしてこう…変な男ばかり寄ってくるのでしょう

```python
# プロンプトの準備
prompt = "わたしってどうしてこう…変な男ばかり寄ってくるのでしょう"

# 推論の実行
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),
        max_new_tokens=256,
        pad_token_id=tokenizer.pad_token_id,
        eos_token_id=tokenizer.eos_token_id,
    )
output = tokenizer.decode(
    output_ids.tolist()[0][token_ids.size(1) :], skip_special_tokens=True
)
print(output)
```

    か？
    それとも、わたしが変なのでしょうか？
    それとも、わたしが変なのでしょうか？
    それとも、わたしが変なのでしょうか？
    それとも、わたしが変なのでしょうか？
    それとも、わたしが変なのでしょうか？
    それとも、わたしが変なのでしょうか？
    それとも、わたしが変なのでしょうか？
    それとも、わたしが変なのでしょうか？
    それとも、わたしが変なのでしょうか？
    それとも、わたしが変なのでしょうか？
    それとも、わたしが変なのでしょうか？
    それとも、わたしが変なのでしょうか？
    それとも、わたしが変なのでしょうか？
    それとも、わ

感想：そうかもしれない

# あ...ありのまま今起こったことを話すぜ！

```python
# プロンプトの準備
prompt = "あ...ありのまま今起こったことを話すぜ！"

# 推論の実行
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),
        max_new_tokens=256,
        pad_token_id=tokenizer.pad_token_id,
        eos_token_id=tokenizer.eos_token_id,
    )
output = tokenizer.decode(
    output_ids.tolist()[0][token_ids.size(1) :], skip_special_tokens=True
)
print(output)
```

    
    あの時の私は、怒りにまかせて、あの人を殴りたいと思った。
    でも、それはできなかった。
    それは、私の胸にある、あの人を殴りたいと思った感情を抑える力があったからだ。
    それは、私の胸にある、あの人を殴りたいと思った感情を抑える力があったからだ。
    それは、私の胸にある、あの人を殴りたいと思った感情を抑える力があったからだ。
    それは、私の胸にある、あの人を殴りたいと思った感情を抑える力があったからだ。
    それは、私の��


感想：結局何も起こらんかったってことやん

# この岸辺露伴が金やちやほやされるためにマンガを描いていると思っていたのか

```python
# プロンプトの準備
prompt = "この岸辺露伴が金やちやほやされるためにマンガを描いていると思っていたのか"

# 推論の実行
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),
        max_new_tokens=256,
        pad_token_id=tokenizer.pad_token_id,
        eos_token_id=tokenizer.eos_token_id,
    )
output = tokenizer.decode(
    output_ids.tolist()[0][token_ids.size(1) :], skip_special_tokens=True
)
print(output)
```

    もしれない。
    それは、岸辺露伴がマンガを描くことによって、金やちやほやされるということを知らなかったからだ。
    岸辺露伴は、マンガを描くことによって、金やちやほやされることを知った。
    そして、それを知った岸辺露伴は、マンガを描くことによって、金やちやほやされることを知ったことを、マンガを描くことによって、金やちやほやされることを知ったことを、マンガを描くことによって、金やちやほやされることを知ったことを、マンガを描くことによって、金やちや

感想：知らなかったことを知るのは大切

# 答えろよ。質問はすでに…『拷問』に変わっているんだぜ

```python
# プロンプトの準備
prompt = "答えろよ。質問はすでに…『拷問』に変わっているんだぜ"

# 推論の実行
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),
        max_new_tokens=256,
        pad_token_id=tokenizer.pad_token_id,
        eos_token_id=tokenizer.eos_token_id,
    )
output = tokenizer.decode(
    output_ids.tolist()[0][token_ids.size(1) :], skip_special_tokens=True
)
print(output)
```

    ？
    それに、この質問は答える必要があるんだぜ？
    答えないと、私は君を殺すぞ？
    答えろよ。
    答えろよ。
    答えろよ。
    答えろよ。
    答えろよ。
    答えろよ。
    答えろよ。
    答えろよ。
    答えろよ。
    答えろよ。
    答えろよ。
    答えろよ。
    答えろよ。
    答えろよ。
    答えろよ。
    答えろよ。
    答えろよ。
    答えろよ。
    答えろよ。
    答えろよ。
    答えろよ。
    答えろよ。
    答えろよ。
    答えろよ。
    答えろよ。��

感想：いつまでたっても実行に移さないでプロシュート兄貴に叱られそう