【あざい るぅか🔁AIVtuberをアジャイル開発で育成】マルチモーダル AI bilingual-gpt-neox-4b-minigpt4を無料のGoogle Colabで遊ぶ使い方



あざい るぅか🔁AIVtuberをアジャイル開発で育成 :マルチモーダル AI bilingual-gpt-neox-4b-minigpt4を無料のGoogle Colabで遊ぶ使い方

マルチモーダル AI bilingual-gpt-neox-4b-minigpt4を無料のGoogle Colabで遊ぶ使い方

0:00 bilingual-gpt-neox-4b-minigpt4とGoogle Colabについて
rinna/bilingual-gpt-neox-4b-minigpt4
https://huggingface.co/rinna/bilingual-gpt-neox-4b-minigpt4

Google Colab
https://colab.research.google.com/?hl=ja

0:15 Google Colab 無料枠での実行手順
概要欄でURLがリンクになるのを防止するため「🔁」記号を混ぜてあります。
コピペするときは「🔁」記号を削除して動画を参考に修正ください。
半角の角かっこは概要欄で使用できないため、セルに張り付けるときは全角の<、>を半角に変更してください。

ランタイム > ランタイムのタイプを変更 > ハードウェア アクセラレータ GPU、GPUのタイプ T4

!pip install omegaconf
RESTART SESSION
!pip install iopath
!pip install timm
!pip install webdataset
!pip install decord
!git clone h🔁ttps://github.com/Vision-CAIR/MiniGPT-4.git
%cd ./MiniGPT-4
!git checkout 22d8888
!wget h🔁ttps://huggingface.co/rinna/bilingual-gpt-neox-4b-minigpt4/resolve/main/customized_mini_gpt4.py
!wget h🔁ttps://huggingface.co/rinna/bilingual-gpt-neox-4b-minigpt4/resolve/main/checkpoint.pth
import torch
import requests
from PIL import Image
from minigpt4.processors.blip_processors import Blip2ImageEvalProcessor
from customized_mini_gpt4 import CustomizedMiniGPT4
model = CustomizedMiniGPT4(gpt_neox_model=”rinna/bilingual-gpt-neox-4b”).to(“cuda”)
tokenizer = model.gpt_neox_tokenizer
ckpt = torch.load(“./checkpoint.pth”, map_location=”cpu”)
model.load_state_dict(ckpt[‘model’], strict=False)
vis_processor = Blip2ImageEvalProcessor()
image_url = “h🔁ttps://huggingface.co/rinna/bilingual-gpt-neox-4b-minigpt4/resolve/main/sample.jpg”
raw_image = Image.open(requests.get(image_url, stream=True).raw).convert(‘RGB’)
image = vis_processor(raw_image).unsqueeze(0).to(model.device)
image_emb = model.encode_img(image)

※全角の< と > を半角に変換してください。
prompt = [
{
“speaker”: “ユーザー”,
“text”: “<Img><ImageHere></Img>画像を説明してください。”
},
]
prompt = [
f”{uttr[‘speaker’]}: {uttr[‘text’]}”
for uttr in prompt
]
prompt = “n”.join(prompt)
prompt = (
prompt
+ “n”
+ “システム: ”
)
embs = model.get_context_emb(prompt, [image_emb])
output_ids = model.gpt_neox_model.generate(
inputs_embeds=embs,
max_new_tokens=512,
do_sample=True,
temperature=1.0,
top_p=0.85,
pad_token_id=tokenizer.pad_token_id,
bos_token_id=tokenizer.bos_token_id,
eos_token_id=tokenizer.eos_token_id
)
output = tokenizer.decode(output_ids.tolist()[0], skip_special_tokens=True)
print(output)

カレントディレクトリの画像を読む例
MiniGPT-4のディレクトリに読み込みたい画像ファイルをアップロードする。
以下はluhca.pngという名前の画像ファイルの場合

raw_image = Image.open(“luhca.png”).convert(‘RGB’)
raw_image
image = vis_processor(raw_image).unsqueeze(0).to(model.device)
image_emb = model.encode_img(image)
※全角の< と > を半角に変換してください。
prompt = [
{
“speaker”: “ユーザー”,
“text”: “<Img><ImageHere></Img>画像を詳しく説明してください。”
},
]
prompt = [
f”{uttr[‘speaker’]}: {uttr[‘text’]}”
for uttr in prompt
]
prompt = “n”.join(prompt)
prompt = (
prompt
+ “n”
+ “システム: ”
)
print(prompt)
embs = model.get_context_emb(prompt, [image_emb])
output_ids = model.gpt_neox_model.generate(
inputs_embeds=embs,
max_new_tokens=512,
do_sample=True,
temperature=1.0,
top_p=0.85,
pad_token_id=tokenizer.pad_token_id,
bos_token_id=tokenizer.bos_token_id,
eos_token_id=tokenizer.eos_token_id
)
output = tokenizer.decode(output_ids.tolist()[0], skip_special_tokens=True)
print(output)

4:06 AITuber あざいるぅかについて
髪形:墓守さんチーム(HakamorisanTeam)様 ショートレイヤー(男女兼用) VRoid用ヘアプリセット https://booth.pm/ja/items/2198514
アイメイク:やまろん製作所 様 【VRoid 旧Ver】アイメイク3種 https://booth.pm/ja/items/2738511
瞳:七百屋 [ Nao-Ya ]様 (無料あり)【VRoid向け瞳テクスチャ】宇宙スイング★バイカラーアイ https://booth.pm/ja/items/2574261
ネイル:七百屋 [ Nao-Ya ]様 (無料あり)【VRoid用テクスチャ】大理石ネイル https://7a04m.booth.pm/items/2580306
衣装:Lagrangesix 【lotz Design Store】様 VRoid正式版対応済☆★L6 Gothic Sailor (Color×5)★☆試着有【VroidStudio正式版用衣装テクスチャ】 https://lotz.booth.pm/items/3129935
サムネ作成ツール:V-SAMUNE-!!様 https://vsamune.com/

【参考文献】
mitsu_koh 様 Japanese MiniGPT-4: rinna 3.6bとBLIP-2を組み合わせてマルチモーダルチャットのモデルを作る https://zenn.dev/rinna/articles/5fad41e3f2a401
npaka 様 Rinna-4Bのマルチモーダル会話モデルを試す https://note.com/npaka/n/nf88f2523b4b1

#aituber
#multimodal
#GoogleColab