Stable Diffusionでよく見られるエラーとその対処方法、呪文の確認は大事ですね。

こんにちわ、真帆葉です。

最近、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の重み付けは「():影響しやすくする」、「[]:影響しにくくする」のようです。

結論

ちゃんとコード見直しましょう。なんだけど、色々なサービス跨ぐと、こうなるよね(笑

ではでは。

コメント

タイトルとURLをコピーしました