投稿

8月, 2023の投稿を表示しています

QEUR23_LLMDSS6: (オリエンテーション)ユーザーがfinetuneしたモデルを使用することの重要性

イメージ
~ これは、とても重要なオリエンテーションです ~ D先生 : “別のブログでLangChain(Vector Store)の応用のプロジェクトが終わり、やっと、この「fine tuning」のブログに戻ってきました。・・・、いや、いままで長かった・・・(笑)。” QEU:FOUNDER : “それにしても、LangChainを使うことによって、LLMの応用の広さと深さをより理解できましたね。今回は、ちょっと「深い」オリエンテーションです。。” C部長 : “これ(↑)って、大きな問題になっていますが、偉い人によると問題ないんでしょ? 「meti」とかいう、「健康に責任を持つ省」が安全といっている んだし・・・。” C部長 : “処理した後の水には 「トリチウム」しかない んでしょ?” D先生 : “どうなんでしょうね。とある、 有名なジャーナリスト のツイッターを参考にしましょう。” QEU:FOUNDER : “とても残念ながら、あの水にはストロンチウムとセシウムが少量ながら残留しているようです。” (ストロンチウム) (セシウム) C部長 : “でも少量なんでしょ?健康に影響はないんでしょ?” QEU:FOUNDER : “それでは、この2つの物質について調べてみましょう。まずは、我々が今まで使ってきたLlama2からしらべましょう。” # llama2-13B-chat-GPTQによる単発LLM回答プログラム import pandas as pd import numpy as np from langchain import HuggingFacePipeline from langchain import PromptTemplate , LLMChain from transformers import AutoTokenizer , pipeline , logging from auto_gptq import AutoGPTQForCausalLM , BaseQuantizeConfig # モデル名 model_name_or_path = "TheBloke/Llama-2-13B-chat-GPTQ...

QEUR23_LMABYS17: 閑話休題~[応用例]PDF文書を読み込み、その内容を要約するプログラムを作る

イメージ
~ こんなコードの事例はWebに山ほどありますよ ~ D先生 : “前回でLangChainに関する、当初の開発目標が完了しました。Fine-tuneとLangChainを併用することで、 LLMの実力を120%発揮できる ことが大体わかりました。さて、今回は閑話休題ですが・・・。” QEU:FOUNDER : “誰にでも使える、とても簡単で実用的なPythonプログラムを作りました。 PDFファイルの要約です 。この手のプログラムは今では、Web上で簡単に見つかりますよ。我々は、少しだけ手を入れていますが・・・。” D先生 : “ああ・・・。あの 有名な論文(Textbooks are all you need)を要約する わけですね。それで、今回のプログラムに工夫が?” QEU:FOUNDER : “・・・いや、別に大したことないです。我々としては・・・。 GPTQのモデルを使用 しています。普通のLLMモデルを使うとメモリがたくさんいりますから・・・。それでは、プログラムをドン!” # PDF Analyzer import torch from transformers import AutoModelForCausalLM , AutoTokenizer , pipeline , logging from langchain.document_loaders import PyPDFLoader from auto_gptq import AutoGPTQForCausalLM , BaseQuantizeConfig from langchain.text_splitter import RecursiveCharacterTextSplitter from langchain.vectorstores import FAISS from langchain.chains import RetrievalQA from langchain.embeddings import HuggingFaceEmbeddings from langchain.llms.huggingface_pipeline import HuggingFacePipeli...

QEUR23_LMABYS16: Llama2の精度評価(LangChain-日本語-その2)

イメージ
~ 「カッコつき」は未知数の手法・・・ ~ D先生 : “され、我々はLlama-v2が日本語をどれだけ使いこなせるのかを調べています。まあ、 LangChainの大詰め にきましたね。” QEU:FOUNDER : “確かにLangChainを使うと、かなりの効果が見られますね。” (Llama-v2-13b-GPTQ:日本語->LangChainはない) (Llama-v2-13b-GPTQ:日本語->LangChainを使っている) D先生 : “今回も日本語でLangChainを使うということですが、今度は何をしましょうか?” D先生 : “おっと、日本語のCONTEXTの内容を少しだけ変えましたね。文中のキーワードにカッコを着けて英語を加えています。この工夫は役に立つんですかね?” QEU:FOUNDER : “そもそも、 このやり方は小生がFinetuneで採用したい方法です。 ただし、これはプロンプトの中につけただけで、LLMの推論を強力にするかどうかはわかりません。” D先生 : “たしかに・・・。肝心のLLM(大規模言語モデル)様が、このカッコのもつ意味を分かってくれるかどうかがわからないですよね。” QEU:FOUNDER : “まあ、何はともあれやってみましょう。今回はプログラムを晒しません。コードは全く同じですからね。それでは、いきなり品質パフォーマンスからいきます・・・。” D先生 : “Open-QAはどうせ正解が多いんだし、結果として、ほとんど同じ実力とみていいのかな?” QEU:FOUNDER : “次はOpen-QAのNG事例を見てみましょう。” QEU:FOUNDER : “Open_QAは、若干悪くなったような気がするんです。Contextの文がカッコを加えたことにより複雑になったのでしょうね。全く間違った返答がいくつかありました。一方のClassificationの場合は・・・。” D先生 : “今までダメなものがうまく行き、うまく行っていたものがダメになる。いやぁ、評価が難しいな・・・。” QEU:FOUNDER : “目線を変えて、前回と今回の結果を比較してみました。D先生、両者を比較して、どうでしたか?” D先生 : “ほとんど同じだが、一部は良くなっ...

QEUR23_LMABYS15: Llama2の精度評価(LangChain-日本語-その1)

イメージ
~ 日本語もかなりイケル!! ~ D先生 : “前回までは英語を中心にトライアルしてきました。しかし、Llama2のLLM(大規模言語モデル)は多国語に対応しているはずでしたよね。” QEU:FOUNDER : “前回の「(LCなしで)日本語だけを使う」という方法では、回答のパフォーマンスが悪くなったわけです。” (Llama-v2-13b-GPTQ:日本語->LangChainはない) D先生 : “特に、英語の回答が多かったのでポイントを落としましたね。” D先生 : “今回は、日本語の質問に対してLangChainを使います。その結果はどうなりますかね?” QEU:FOUNDER : “小生もすこしワクワクします。それでは、プログラムをドン!コードは、実際には英語版とは変わらないですが・・・。” # llama2-13B-chat-GPTQによる連続回答プログラム(LangChainつき) import pandas as pd import numpy as np # LLM from transformers import AutoTokenizer , pipeline , logging from auto_gptq import AutoGPTQForCausalLM , BaseQuantizeConfig # LangChain from langchain import HuggingFacePipeline , PromptTemplate , LLMChain from langchain.chains import RetrievalQA from langchain.document_loaders import DirectoryLoader from langchain.embeddings import HuggingFaceEmbeddings from langchain.text_splitter import RecursiveCharacterTextSplitter from langchain.vectorstores import Chroma #Load all t...