NovelAI Journal
Back to NovelAI

ジャーナル記事

NovelAI の最初の1か月

クローズドアルファを終え、オープンベータを目前に控えた時点での NovelAI について、機能と技術の内側、そしてこれからの予定をまとめました。

公開日

皆さん、こんにちは。

クローズドアルファがちょうど終わり、まもなくオープンベータを公開します。そこで、私たちの技術の内側と、現在使える機能について記事を書くことにしました。

この記事は 機能技術これからの予定 の3つに分かれています。

機能

AI

NovelAI は、私たちがファインチューニングした GPT-Neo モデルで動いており、コードネームは Calliope です。質の高い文章や小説で学習させているため、生成能力は元のモデルより高まっています。このモデルを作るにあたっては、さまざまなデータセットと学習ハイパーパラメータを何度も試して検証を重ねました。

AI の記憶容量である 2048 トークンを、すべて使えるようにしています。英語では1トークンがおよそ4文字にあたるので、8000〜9000 文字ほどになります。比較として、AI Dungeon の記憶容量は 2800 文字が上限で、平均するとおよそ 700 トークン相当でした。

上の図のとおり、AI はより昔の出来事まで覚えていられるということです。

生成の速度と品質についてもモデルを最適化しました。混み具合と生成したいトークン数にもよりますが、2048 トークンの記憶をすべて使っている状態でも、かなり速く動くはずです。ベータ期間中も、さらなる最適化に取り組んでいきます。

A poem written by NovelAI

NovelAI が書いた詩

AI を自分好みに調整する

UI からできるだけ多くの設定にアクセスできるようにしています。中には tail-free sampling のように、最新の推論ライブラリにも入っていないものもあります。AI モデルを完全に自由に扱えるようにして、それぞれの用途に合わせて調整していただくことが私たちの目標です。

始めるのも簡単、書き直すのも簡単

プロンプトの長さは自由です。単語ひとつでも、細かく書き込んだ数段落でも構いません。AI に伝えておきたい設定は memoryauthor’s note に書いておけます。

NovelAI では、物語のどの部分でも好きなように編集できます。本文のウィンドウをクリックして、思いのままに書き換えるだけです。マウスのひとクリックで、物語を望む方向へ導き、形づくれます。

物語の各部分を、どこから生まれたかによって色分けして表示する機能もあります。プロンプト、ユーザーの入力、AI が生成した文章、編集した箇所が、それぞれ異なる色で表示されます。AI に任せた部分と自分で書き直した部分がひと目で分かるので、物語がどのように出来上がってきたのかを追いやすくなります。

自由な編集に加えて、アンドゥとリドゥも好きなだけ行えますし、AI に何度でもリトライさせられます。前のリトライのほうが好みだったと後から気づいた場合も、リトライブランチ機能で、その編集に対して行ったすべてのリトライから選び直せます。

何度もリトライした地点まで戻りたいときもご安心を。リドゥ機能を使えば、リトライブランチにもう一度アクセスできます。

簡単な書き出しと取り込み

NovelAI では、オプションタブを開いてダウンロードボタンを押すだけで、物語を簡単に書き出せます。書き出した物語は誰とでも共有できますし、バックアップとして残しておくこともできます。 memoryauthor’s noteブランチ 、そして物語ごとの設定も、書き出したファイルに含まれます。

memory、author’s note、そして見やすいコンテキスト履歴

memoryauthor’s note は、文体や文脈の情報に働きかけることで、AI を創作の狙いどおりに導く助けになります。AI モデルはトークン単位で動作し、NAI が扱えるトークン数には限りがあります。そのため、 author’s notememory 、そして 物語のコンテキスト は、同じトークンの枠を分け合うことになります。

memoryauthor’s note に文章を書いていくと、そこまでに使ったトークン数が実際に表示されるので、外部ツールを使わなくても トークンの使い方 を最適化できます。次の生成リクエストで AI に何が送られるのかも、そのまま確認できます。

テーマのカスタマイズ

自分だけの体験を作り上げていただきたいので、カスタマイズの項目では、デザイナーが用意したプリセットのテーマから好きなものを選べるようにしました。現在、サイトには10種類以上のプリセットテーマが用意されています。気に入るものがなければ、エディターで簡単に手直しできます。

暗号化と保存

物語は既定でブラウザ内に保存されます。暗号化した形で私たちのサーバーに保存することも選べるので、どの端末からでも同じ物語を開けます。

物語は、サーバーへ送られる前に AES-256 でローカル暗号化されます。暗号鍵は端末の外に出ることがないため、その鍵なしに物語へアクセスできる人は誰もいません。AI の生成リクエストはトークン化された形で送られ、その内容を私たちが記録することは ありません

詳しい仕組みについては、この記事の後半で説明しています。

技術

デザインとUX

NovelAI を作るうえで、誰にとっても心地よい体験にすることを優先しました。幸いにも、私たちには参考にできる先行プラットフォームがありました。私たちのサイトを、皆さんが居場所として感じられ、新しい物語や体験を紡げる場にしたいと考えています。ですから、執筆を助けるものはどれも、手の届かないところにあってはいけません。

NovelAI のインターフェースは、ストーリーライブラリ、入力欄、ストーリーオプションという3つの主要な領域に分かれています。ストーリーライブラリは、作った物語がすべて並ぶ場所です。自分の物語にすぐたどり着けるようにしたいと考えました。ここではお気に入りを設定したり、名前や自分で付けたタグで過去の物語を検索したり、新しい物語を作ったり、アカウントやカスタマイズの設定を開いたりできます。

入力欄は、冒険を書き綴っていく場所です。ここは視覚的な気が散る要素を排し、すっきりと保つことを意図しました。そのために、執筆に集中したいときは両側のサイドバーを隠せるようにしています。使いやすさのために、テキスト領域に入力された文章も生成された文章も、自由に編集できます。他のサービスに慣れた方のために、ページ下部の入力ボックスから文章を送る形式も選べます。

生成はアンドゥでき、より良い結果を求めてリトライもできます。これらの結果はすべて「Redo」ボタンの裏に保存され、リトライした生成の一覧を見て、過去のものを呼び戻すこともできます。ストーリーオプションのパネルは、物語の進み方を調整するための総合窓口です。タイトルや説明といった表層的な項目から、Memory、Randomness、Top-K Sampling などのより踏み込んだ項目まで設定できます。ここは、AI の生成結果を調整するための、書き手の遊び場です。

暗号化

物語のデータは、暗号化された形でのみ私たちのサーバーに保存されます。物語ごとに専用の暗号鍵があり、これはローカルで生成されて、個人のキーストアに保管されます。このキーストア自体も、サーバーへ送られる前にあなたの暗号鍵で暗号化されます。

暗号鍵と復号済みのキーストアが端末の外に出ることはありません。つまり、私たちを含めて、誰も物語にアクセスできないということです。

ログイン時には、ユーザー名とパスワードから認証トークンと暗号鍵がローカルで生成されます。認証トークンがサーバーへ送られ、ユーザーデータと暗号化されたキーストアを取得し、それをあなたの暗号鍵で復号します。

サーバーに保存された物語を取得する際は、 ローカルで復号したキーストア からその物語の暗号鍵を取り出して復号します。

GPU とノードの扱い

NovelAI は Hugging Face や Inferkit のような API プロバイダーを使っておらず、モデルは自分たちで管理しているクラウド GPU 上で動いています。GPU 1台から必要なだけ増やせる動的スケーラーを備えており、今あるモデルより大きなモデルや、多数のモデルを同時にホストすることも可能です。

ファインチューニング

ファインチューニング済みのモデル Calliope は、厳選した文学作品や質の高い文章で学習しています。コミュニティのボランティアの皆さんから新しいデータが集まるたびにファインチューニングを重ね、モデルとデータセットの性能を高める方法も引き続き試していきます。

Calliope は GPT-Neo 2.7B をもとに、質の高い物語生成に向けてファインチューニングしたものです。ハイパーパラメータとデータセットを変えながら10通りほどの学習を行い、物語生成向けの評価データセットにおいて perplexity と loss の大幅な改善を確認しました。

We experimented on 10 different runs with different datasets and hyperparameters.

データセットとハイパーパラメータを変えて、10通りの学習を試しました。

クローズドアルファが終了しました

今週クローズドアルファを実施し、3日前に終了しました。テスターの皆さんから貴重なご意見をたくさんいただきました。アルファ期間中に見えてきた利用データの一部を、ここでご紹介します。

アルファの参加者はおよそ100名で、3日間で 40005 アクションを処理しました。合計すると 200万トークンの生成 にあたります。

このプロジェクトを始めてから 1か月 。本当に濃密な日々でした。ご提案やご意見をくださった方、あるいはただ一緒にいて、このプロジェクトを信じてくださった方、そのすべてに感謝します。

これからの予定

オープンベータの 料金公開日 を、機能のロードマップとあわせて 今週前半 に発表します。最新情報は、subreddit への参加、DiscordTwitter のフォロー、あるいは私たちのサイトでご確認ください。

Discord:https://discord.gg/novelai

Twitter:https://twitter.com/novelaiofficial

Reddit:https://www.reddit.com/r/NovelAi/

Website:https://novelai.net/

A story written by NovelAI

NovelAI が書いた物語