こんにちわ、真帆葉です。
最近、Stable Diffusionを動かしてみるのも、いろいろ変化があって面白そうだったので、NovelAIの合間に遊んでいます。(元々pythonはちょっと扱えるので、その延長線上ですね。)
さて、Stable Diffusionを動かしてみて、エラーが出たので調べてみました。画像は出てきたので、致命的なものではなさそうです。
しかし、なんとなくそういうのも気持ち悪いので、こういうエラーは早めに調べておくのが吉ですね。
確認
気持ち悪いエラーの内容はこちら。
The following part of your input was truncated because CLIP can only handle sequences up to 77 tokens: XXXXXXXX
まずは、英語見てもわかんないので、翻訳してもらいます。
翻訳:CLIPは77トークンまでの配列しか扱えないため、入力の次の部分は切り捨てられました。XXXXXXXX
トークン、恐らく単語数が77個を越えたので、後ろを切り捨てられたメッセージのようです。
調査/検証
エラーメッセージが会っているか、以下のコマンドで、トークン数を確認してみました
prompt = "あなたが考えた最強の呪文を入れてください。"
print('prompt :' + prompt)
print('トークン数 :' + str(len(prompt.split(' '))))
しかしながら、このコマンドを実行してみた限り、トークン数は超えていませんでした。
なので、文字数も念の為確認してみます。
prompt = "あなたが考えた最強の呪文を入れてください。"
print('prompt :' + prompt)
print('文字列長 :' + str(len(prompt)))
print('トークン数 :' + str(len(prompt.split(' '))))
文字数を確認したところ、268文字とカウントされました。
プログラムのたいていの場合、256,5121024などの2の2乗辺りが最大値設定されているケースが多いので、文字数を256未満にしてみたところ、メッセージが表示されなくなりました。
なお、削った文字は「.」、「,」、「{}」など。
※「{}」はNovelAI用の重み付けで、Stable Diffusionには関係無さそうです。
ちなみに、Stable Diffusionの重み付けは「():影響しやすくする」、「[]:影響しにくくする」のようです。
結論
ちゃんとコード見直しましょう。なんだけど、色々なサービス跨ぐと、こうなるよね(笑
ではでは。
コメント