見出し画像

Chat with RTXを少し触ってみた

 nVIDIAが配布しはじめた、GeForce RTX30/40シリーズの8GB以上のVRAMを持つグラフィックカードを搭載したPCで、ローカルで文章生成AIを実行できるアプリ。
 日本語版はまだだけど、英語で使えたので触ってみよう。

 ダウンロードとインストールは他にもやってる方がnoteでも見られるので略。35GBダウンロードする時間と、そのZIPの解凍と、出てきたインストーラーでさらにモデルのダウンロードがあって、でかなり時間がかかるぞ。
 それから、うちのRTX3060 12GBだと、モデルはMistral 7B int4しか選べなかった。まあ仕方ない。

学習させてみたい

 7BモデルのLLMだったらもうすでに使えることは使えるんだけど、ちょっと私の知識が及ばず、モデルに追加で情報を学習させるところまでやれてなかった。
 しかしChat with RTXは学習が簡単だという。

 で、インストールして実行すると、まずこの画面にくる。
 左上の「AI model」ペインがモデル。今のところ他のものは選べないが、これなんとかして日本語モデル読ませれば日本語いけるかもしれないな。

 で、問題の右上、「Dataset」ペイン。
 「Folder Path」になってるとき、下の欄にフォルダパスを指定する。そこに学習させたい文書データを、txt、pdf、doc形式のいずれかで置いておく。
 デフォルトですでにある程度テキストファイルが置かれたフォルダが指定されていて、中を見るとGeForceについてや、PortalやHalf life 2といった有名ゲームについてのあらましを書いたファイルがあった。多分このへんのことは答えられるんだろう。

 それとは別にフォルダを作って、プロジェクト・グーテンベルクから落としてきた、カフカの「変身」をテキストファイルで配置した。
 UTF-8のテキストでいいみたい。日本語を読むかは不明なので、一旦英語で。

 「変身」の概要(synopsis)教えて、と質問してみると。

「変身」は、1905 年に出版されたフランツ カフカの短編小説です。この物語は、ある日目覚めると巨大な昆虫に変わっていたことに気づく巡回セールスマン、グレゴール ザムザの人生を描いています。彼は、自分の新しい姿と、それがもたらす恥ずかしさや当惑、そして私生活や職業生活で直面する困難に対処しようと奮闘している。物語全体を通して、グレゴールは人間の姿に戻る方法を見つけようとしますが、最終的には自分が新しい体に永遠に閉じ込められていることに気づきます。この物語は、人間の状況と、人々が人生で直面する困難についての解説です。
参考ファイル:
Metamorphosis.txt

Chat with RTXの回答をChromeの機能で翻訳

 かなり質がいい回答するなあ。

 ここで、「ザムザのjobは?」と聞いてみると。

与えられたコンテキスト情報に基づいて、ザムサの仕事が何であるかは明示的には述べられていません。しかし、彼は会社の従業員であり、お金を預けられていると述べられています。また、彼は出社できず、離職率も満足のいくものではなかったとも述べられている。
参考ファイル:
Metamorphosis.txt

Chat with RTXの回答をChromeの機能で翻訳

 さっきセールスマンって言ってたのに。
 「離職率」という部分は turnover で、これは売上高が正しそう。やっぱセールスマンなのでは?

 「ザムザの妹の名前は?」と聞くと。

ザムザの妹の名前は、与えられたコンテキスト情報には記載されていません。
参考ファイル:
Metamorphosis.txt

Chat with RTXの回答をChromeの機能で翻訳

 どうもこれまでLLMをいじった感じ、知らんことを適当に自信満々に答える印象があったんだけど、「そんなこと書いてない」という回答をする。

PDF1.7の仕様書を読ませてみる

 ちょっとやりたいことがあって、PDFファイルの仕様書を読み込ませてみた。古いPDF 1.7の仕様書はAdobeが公開している

 PDFファイルは、テキストで読み込んでみると、パスワードのハッシュが記録されている。/U <ハッシュ> って書いてる部分がある。
 これは一定の法則に基づいて作られてるはずで、それを知りたい。

 PDF1.7の仕様書を読み込ませたChat with RTXに、「Tell me how to encode PDF user password」と聞いてみる。

To encode a PDF user password, you can follow these steps:

1. Pad or truncate the password string to exactly 32 bytes. If the password string is more than 32 bytes long, use only its first 32 bytes; if it is less than 32 bytes long, pad it by appending the required number of additional bytes from the beginning of the following padding string:
< 28 BF 4E 5E 4E 75 8A 41 64 00 4E 56 FF FA 01 08
2E 2E 00 B6 D0 68 3E 80 2F 0C A9 FE 64 53 69 7A >
That is, if the password string is n bytes long, append the first 32 - n bytes of the padding string to the end of the password string. If the password string is empty (zero-length), meaning there is no user password, substitute the entire padding string in its place.
2. Initialize the MD5 hash function and pass the result of step 1 as input to this function.
3. Pass the value of the encryption dictionary's O entry to the MD5 hash function.
4. Treat the value of the P entry as an unsigned 4-byte integer and pass these bytes to the MD5 hash function, low-order byte first.
5. Pass the first element of the file's file identifier array (the value of the ID entry in the document's trailer dictionary; see Table 3.13 on page 97) to the MD5 hash function.
6. (Revision 4 or greater) If document metadata is not being encrypted, pass 4 bytes with the value 0xFFFFFFFF to the MD5 hash function.
7. Finish the hash.
8. Take the output from the final invocation of the RC4 function and pass it as input to a new invocation of the function; use an encryption key generated by taking each byte of the original encryption key (obtained in step 1) and performing an XOR (exclusive or) operation between that byte and the single-byte value of the iteration counter (from 1 to 19).
9. Append 16 bytes of arbitrary padding to the output from the final invocation of the RC4 function and store the 32-byte result as the value of the U entry in the encryption dictionary.

Note that the above steps are for encoding a PDF user password using Algorithm 3.5 (Revision 3 or greater). If you are using a different version of the algorithm, the steps may be slightly different.
Reference files:
pdfreference1.7old.pdf

Chat with RTXの回答

 ちゃんと、ユーザーパスワードをハッシュ化するアルゴリズムを書いてある部分を回答してくれる。
 これは長い英語マニュアルを解読するのにかなり使えそうだなあ。

いい感じ

 やはり学習させたデータに基づいて回答させる、という機能があると、ぐっと実用性があがる。
 日本語版がほしいところではあるんだけど、AIモデルに日本語いけるモデルを読み込ませる方法があればなんとかならんかな。どうだろ。

 速度に関しても、特にRTX3000シリーズ以降と指定するからには最適化して、以前なかった命令なんかも利用してるんだろうと思う。明らかに回答が速い。
 インストールも簡単だし、かなりいいなあ。

この記事が気に入ったらサポートをしてみませんか?