メむンコンテンツぞスキップ
芋出し画像

LangChain & GPT-3 蚭定倀䞀芧メモ

    LangChainに必芁な蚭定倀に぀いお、情報が分散しおおり関数蚭定に苊劎したため、情報を本ペヌゞにたずめたした。
    公開はしおおりたすが、個人蚘録甚のため、未完成の状態で公開しおおりたす。

    1. モデル名 / model_name: str = "text-davinci-003"

    (OpenAI / "model": "text-davinci-003")

    GPT-3のモデルは以䞋の3぀が提䟛されおいたす。

    text-davinci-003
    - Max Request / 4,000 tokens
    - Pricing / $0.0200 -ï¿¥2.6 (1K tokens)
    - Description / GPT-3の䞭で最も高性胜なモデルです。他のモデルで可胜なあらゆるタスクが可胜で、倚くの堎合、より高い品質、長い出力、より良い呜什远埓性が埗られたす。たた、テキストに補完蚘号を挿入するこずも可胜です。

    text-curie-001
    - Max Request / 2,048 tokens
    - Pricing / $0.0020 -ï¿¥0.26 (1K tokens)
    - Description / 非垞に高機胜だが、Davinciより高速で䜎䟡栌。

    text-babbage-001
    - Max Request / 2,048 tokens
    - Pricing / $0.0005 -ï¿¥0.065 (1K tokens)
    - 玠盎な応答が可胜で、非垞に速く、䜎コスト。

    text-ada-001
    - Max Request / 2,048 tokens
    - Pricing / $0.0004 -ï¿¥0.052 (1K tokens)
    - 玠盎な応答が可胜で、非垞に速く、䜎コスト。

    https://platform.openai.com/docs/models/overview
    https://openai.com/api/pricing/

    2. トヌクン / max_tokens: int = 256

    (OpenAI / "max_tokens": 7,)

    GPTファミリヌは、テキストをトヌクンに倉換するこずによっお凊理しおいたす。GPTは、トヌクン間の統蚈的関係を理解し、䞀連のトヌクンの次のトヌクンを生成したす。

    トヌクンは以䞋のサむトで、どのようにテキストをトヌクン化しおいるかを可芖化できたす。

    2-1.max_tokens:int

    max_tokensパラメヌタは、APIが返すトヌクンの数の䞊限を蚭定したす。

    プロンプトのトヌクン数ず max_tokens を足したものが、モデルのコンテキスト長を超えるこずはできたせん。ほずんどの機皮のコンテクスト長は 2048 です (ただし 4096 をサポヌトする最新機皮は陀く)。

    https://platform.openai.com/docs/api-reference/making-requests

    >プロンプトのトヌクン数ず max_tokens を足したものが、モデルのコンテキスト長を超えるこずはできたせん。

    モデルを" text-curie-001(2048 コンテキスト長)"、プロンプトを"How much has Microsoft invested in AI?(8 tokens)"を送信した堎合、max_tokensを"2048"ず蚭定しおも、APIから返信されるトヌクン数は2040が最倧倀ずなりたす。

    2-2.トヌクンず日本語に぀いお

    以䞋は、同䞀内容の文章を、英語・日本語でトヌクン数をカりントしおいたす。䞋蚘の䟋の通り、英語は単語ごずに、1トヌクンが䜜成されおいるのに察しお日本語では、文字ごずにトヌクンが䜜成されおいたす。䞋蚘䟋では、日本語は英語に比べトヌクンが倍䜜成されたす。そのため、Open AI APIに日本語を甚いた堎合、英語を甚いた堎合に比べ、䞋蚘䟋では倍割高になりたす。

    画像
    英語で䜜成した堎合
    画像
    日本語で䜜成した堎合

    3.サンプリング枩床 / temperature: float = 0.75

    (OpenAI / "temperature": 0,)

    わかりにくい関数䜍だず思われる関数です。
    答えのランダム性を蚭定しおいたす。
    (名前は、枩床で、運動が倉化する分子をむメヌゞしおいる)

    枩床が䜎いほど、GPTは、出珟率の高い単語を遞択するようになりたす。答えが぀しかない堎合は、枩床を䜎く蚭定する必芁がありたす。逆に、アむデアを出したいずきや物語を䜜りたいずきは、枩床を高くするず倚様性をもたらしたす。

    枩床0のGPT-3を䜿っお、"How to make "ずいう文章を完成させるず、完成が埗られたす。"a good impression on a first date"初デヌトで奜印象を䞎える。これをTemperature = 1で繰り返すず、「タヌバン巻きのココナッツヘア」から「油をほずんど党く䜿わないマペ」「マむンクラフト1の新サヌバヌ」たで出おくるのです。違いがわかりたすか

    時々、Temperature をクリ゚むティビティ蚭定ず呌ぶ人がいたすが、公匏ドキュメントではそのようなラベルは掚奚されおいたせん。クリ゚むティビティは単にランダム性を䞊げるこずよりも耇雑です。

    枩床
    枩床0で、「私の奜きな動物は」ず聞いおみたしょう。
    ランダム性が0に制限されおいるこずから予想されるように、GPT-3は最も確率の高い完成圢である「a dog」を導き出すでしょう。
    ランダム性を排陀するこずで、もう䞀぀の効果がありたす。GPT-3は、䞎えられたプロンプトに察しお垞に同じ出力をするのです。プロンプトを10回実行したずころ、党く同じ出力が10回埗られたした。枩床が䜎いず、安定した、最も確率の高い出力が必芁な堎合に適しおいたす。事実の出力、分類など
    「確率を衚瀺する」蚭定により、GPT-3が䞖界をどのように芋おいるか、そしお次に来るべき単語トヌクンを芋るこずができたす。
    驚くなかれ、"dog "に次いで確率の高い出力は "cat "で、3番目は "gir"。"girffe "から来たトヌクンである可胜性が非垞に高いのです。぀たり、ランダム性ずいうのは、GPT-3が様々な確率のトヌクンを䜜成しおいるこずを意味しおいるのです。

    枩床
    枩床1に蚭定するず、非垞に䞀貫性のない、時には興味深い結果が埗られたす。オヌプン゚ンドのタスクであっおも、枩床倀1を䜿甚するのは特別な堎合のみにしおください。ストヌリヌの完成やアむデア出しの堎合、枩床倀は0.7から0.9の間であるこずが䞀般的です。枩床0ずは出力が倧きく異なり、"Wibblezoo "の堎合、動物ですらありたせん。GPT-3は文脈を維持するが、この蚭定では信頌性が䜎くなりたす。このような蚭定にするず、長い文章ではGPT-3の方が早く脱字しおしたうこずが予想されたす。

    枩床0.75
    䞀般的に、クリ゚むティブなタスクでは0.700.90の枩床が最も䞀般的ずされおいたす。䞋の出力を芋る前に、「私の奜きな動物は」の補完のために蚭定枩床0.75でGPT-3がどのような出力を生成するかを掚枬しおみおください。ランダム性が少し䜎くなったこずで、より安定した結果が埗られおいたす。GPT-3は動物のすぐ埌にピリオドを打぀こずが倚くなりたした。ノェロキラプトルが出たのはいいのですが、実圚しない動物は出おきたせん。

    枩床蚭定には䞀般的な掚奚事項がいく぀かありたすが、決たったものはありたせん。これは最も重芁な蚭定の1぀であるため、いろいろず詊しおみお、さたざたな皮類のプロンプトにどのような圱響を䞎えるかを確認する䟡倀がありたす。より良いプロンプタヌずなるために圹立ちたす。

    https://algowriting.medium.com/gpt-3-temperature-setting-101-41200ff0d0be
    画像
    枩床の出力
    画像
    枩床1の出力
    画像
    枩床0.75の出力

    4.top_p: float = 1

    (OpenAI / "top_p": 1,)

    Temperatureが、ラむンダム性を関数に蚭定し、確率的な文章を出力するのに察し、top_p=0.1は、確率の高い䞊䜍10%の候補から遞択されたす。倀を小さくするこずにより、候補が確率の高いものから遞ばれたす。

    Open AI
    「temperature」によるサンプリングに代わるもの。
    栞サンプリングず呌ばれる。
    確率質量が䞊䜍_pのトヌクンの結果を考慮するモデルがありたす。぀たり、0.1は䞊䜍10%の確率を構成するトヌクンのみが考慮されるこずを意味したす。
    䞀般的に、top_pかtemperatureを倉曎するこずを掚奚するが、䞡方は掚奚しない。

    LangChain
    各ステップで考慮すべきトヌクンの総確率質量。

    https://platform.openai.com/docs/api-reference/completions/create#completions/create-top_p
    https://langchain.readthedocs.io/en/latest/reference/modules/llms.html

    5.frequency_penalty: float = 0

    既出の単語を甚いるかどうかを蚭定したす。
    -2.0の堎合、同じ単語が繰り返し珟れるようになりたす。
    2.0の堎合、同じ単語を䜿うこずを避けたす。

    Frequencyでは、同じ単語を䜿った回数に応じお、ペナルティを䞎えたす。

    Open AI
    -2.0 から 2.0 の間の数。正の倀は、これたでのテキストにおける既存の頻床に基づいお新しいトヌクンにペナルティを䞎え、モデルが同じ行をそのたた繰り返す可胜性を枛少させる。

    LangChain
    繰り返されたトヌクンを頻床に応じおペナルティヌを課す。

    https://platform.openai.com/docs/api-reference/completions/create
    https://langchain.readthedocs.io/en/latest/reference/modules/llms.html

    6.presence_penalty: float = 0

    既出の単語を甚いるかどうかを蚭定したす。
    -2.0の堎合、同じ単語が繰り返し珟れるようになりたす。
    2.0の堎合、同じ単語を䜿うこずを避けたす。

    presenceでは、単語が登堎したかどうかで、ペナルティを䞎えたす。

    Open AI
    -2.0 から 2.0 の間の数倀。正の倀は、新しいトヌクンがこれたでのテキストに珟れるかどうかに基づいおペナルティを課し、新しいトピックに぀いお話すモデルの可胜性を高める。

    LangChain
    トヌクンの繰り返しにペナルティを課す。

    https://platform.openai.com/docs/api-reference/completions/create
    https://langchain.readthedocs.io/en/latest/reference/modules/llms.html

    7.n: int = 1

    (OpenAI / "n": 1,)

    Open AI
    各プロンプトに察しお生成される入力補完の数。

    泚意: このパラメヌタは倚くの補完を生成するため、トヌクン割り圓おをすぐに消費しおしたう可胜性がありたす。max_tokens ず stop に適切な倀を蚭定し、慎重に䜿甚しおください。

    LangChain
    各プロンプトに察しお生成するコンプリヌト数を指定したす。

    https://platform.openai.com/docs/api-reference/completions/create
    https://langchain.readthedocs.io/en/latest/reference/modules/llms.html

    8.best_of: int = 1

    Open AI
    サヌバサむドで best_of completions を生成し、「ベスト」トヌクンごずの察数確率が最も高いものを返す。結果をストリヌミングするこずはできたせん。

    n ず䞀緒に䜿うず、best_of が候補の数を、n が返す数を指定したす - best_of は n よりも倧きくなければなりたせん。

    泚意: このパラメヌタは倚くの補完候補を生成するため、トヌクンの割り圓おをすぐに消費しおしたう可胜性がありたす。max_tokens ず stop に適切な倀を蚭定し、慎重に䜿甚しおください。

    LangChain
    サヌバサむドで best_of completions を生成し、"best" を返す。

    https://platform.openai.com/docs/api-reference/completions/create
    https://langchain.readthedocs.io/en/latest/reference/modules/llms.html

    9.model_kwargs: Dict[str, Any] = None

    LangChain
    明瀺的に指定されおいないcreate callに有効なモデルパラメヌタを保持する。

    https://langchain.readthedocs.io/en/latest/reference/modules/llms.html

    10.batch_size: int = 20

    LangChain
    耇数のドキュメントを枡しお生成する際に䜿甚するバッチサむズ。

    https://langchain.readthedocs.io/en/latest/reference/modules/llms.html

    11.request_timeout: Optional[Union[float, Tuple[float, float]]] = None

    LangChain
    OpenAI補完APIぞのリク゚ストのタむムアりト。デフォルトは600秒です。

    https://langchain.readthedocs.io/en/latest/reference/modules/llms.html

    12.logit_bias:

    Logit_bias は、指定したトヌクンが Completion に出珟する可胜性を倉曎するオプションのパラメヌタです。
    このパラメヌタは、トヌクンず、-100 (犁止) から 100 (トヌクンの排他的遞択) たでのバむアス倀を関連付けた JSON オブゞェクトを受け取りたす。1 や 1 のような䞭皋床の倀では、トヌクンが遞択される確率がより小さく倉化したす。logit_biasパラメヌタを䜿甚する堎合、バむアスはサンプリングの前にモデルによっお生成されたロゞットに远加されたす。


     
     
    ç§‘å­Šç³»YouTuber+ハヌドりェア゚ンゞニアなゎリラのお話。

    あなたぞのおすすめ