Survey: Large Language Models for Supply Chain Optimization
Tags: machinelearning, gpt3
Published: 2024-03-24 07:39:28

## 選定理由

LLM + Digital Supply Chain Surveillance というトレンド分野、Microsoft Research。Microsoft Cloud Supply Chainというチームがあるらしく、これまでの DSCS の考え方をクラウドの最適化に用いるビジネス領域のようだ([Ref](https://www.microsoft.com/en-us/research/video/research-talk-optimizing-the-cloud-supply-chain/))。

Paper: https://arxiv.org/abs/2307.03875
Code: https://github.com/microsoft/OptiGuide

https://dev.to/tutti/survey-is-gpt-4-a-good-data-analyst-aa3
上記のサーベイでもそうだが、LLMは周囲のアーキテクチャ設計やデータパイプラインを工夫することで新しい価値を創造する応用研究が多い。一方でLLMsができることが増える(本研究の場合は最適化)とこのような応用研究は将来的にはLLMsに吸収されていってしまう。

薬剤系領域のサーベイ論文[[Aguero2024](https://meridian.allenpress.com/jppt/article/29/2/200/499870/The-Potential-Application-of-Large-Language-Models)]でもSimulation and Trainingのアプローチとして言及されている。

## 概要

【社会課題】
サプライチェーンオペレーションにおける最適化結果の説明と解釈はステークホルダーにとって重要である。しかし、説明には専門知識を必要とし、オペレーション担当がその結果を理解し実施するためには相当な知見と人海戦術が必要であった。

【技術課題】
1.説明性は大規模言語モデルによって得られるが、最適化は言語モデルの外で行われる。2.ドメイン適応するために大量のデータが必要となる。3.異常時のデータが希少であるため収集が難しいく、ビジネス領域では異常時こそ解決策を必要とされる。

【提案】
テキスト形式のクエリを受け入れ、最適化結果に関する洞察を出力するOptiGuideを提案。最適化計算を行うコードをLLMsに生成させることで、サプライチェーンの最適化結果を定量的に解釈し、変更が結果にどのように影響するかを推定することができる。

【効果】
サプライチェーンの最適化結果を自然言語を通じてより効果的に理解・試行錯誤でき、意思決定を行うことが可能となった。又、Microsoftのクラウドサプライチェーン内の実際のサーバー配置シナリオでOptiGuideの効果を検証し、有効性を示した。

## OptiGuide

LLM（大規模言語モデル）や関連ツールは一部の機能を処理できるが、サプライチェーン管理には複数の機能が必要であり、これらをシステマティックに対処するエンドツーエンドのフレームワークが必要。OptiGuideはそのようなフレームワークの設計を提供する。

![fig1](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/d61r7wc1edb21spjussf.png)

![fig2](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/fqzcveyvia53d0xoubdu.png)

OptiGuideのアーキテクチャ(図2)は、エージェント、LLMs、およびアプリケーション固有のコンポーネントの3つのセットから構成される。ユーザーが質問を投げると（1）、Coderがその質問を受け取り、LLMs向けにインコンテキスト学習（ICL）の質問（2）に変換する。LLMsは質問に答えるためのコードを生成し（3）、SafeGuardはそのコードの妥当性をチェックする。問題がなければ、コードはアプリケーション固有のコンポーネントに送られ（4）、コンポーネントはコードを処理し、結果を生成し、ファイルに記録（5）。最終的な結果を得るには、（2から5の）複数のイテレーションを実施し、これによりクエリは徐々に改善され、最後にコンポーネントからの出力ログがLLMsにフィードバックされる（6）。LLMsはログを分析し、人間が読める回答を生成（7）、そしてその回答がユーザーに送られる（8）。

![fig4](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/iobstx76xvri5dlrkq99.png)

図4はCoderの出力とLLMが生成したコードの例である。

![fig6](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/gx0kw9bgh4d9n0m2mvbk.png)

動作例は図６である。図１に対してCoderやSafeGuardの中間生成物(灰色のボックス)によって内部動作が理解できる。

## 実験

### 評価タスクとデータセット
意思決定を必要とする様々な最適化問題で評価した：施設配置シナリオ、製品の配布のための多様な商品ネットワークフロー、労働者の割り当て最適化、巡回セールスマン問題、コーヒー配布シナリオ。コードはPythonで、[Gurobi](https://www.gurobi.com/)ソルバーを使用した。
各タスクに対して質問と回答のペアを作成した。これらはIn-Context Learning向けのfew-shot example、もしくは評価用である。多くのサンプルを作成するために、以下のようなマクロを用いて質問と回答のペアをGPTで生成した。
few-shot の文を選定する方法として質問文に近い文章を最近傍で選ぶ方法と、ランダム選択する方法で比較することとした。

> QUESTION: What if we prohibit shipping from VALUE-X to VALUE-Y?
VALUE-X: random.choice(suppliers)
VALUE-Y: random.choice(roasteries)
GROUND-TRUTH: model.addConstr(x[VALUE-X, VALUE-Y] == 0)

質問の多様性を増やすために、別の表現に言い換えるようにGPTに指示した。たとえば、生成された質問「Supplier 1からRoastery 2への豆の出荷の選択にはどのような利点がありますか」という質問を「Supplier 1からRoastery 2への豆の出荷の選択にはどのような利点がありますか」という質問に言い換える。
評価メトリクスは以下のACを使用した。

![metric](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/qi6d3rb9ceu1jc3dsdvt.png)

Rは実験回数、qtは質問セットを、1(qt)はそれが成功したかどうかを表す。LLMは、質問セットに含まれる全ての質問に成功した場合に限り、成功とみなす。

### 結果

![tb1](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/fczwedwmie6z4c0hby9h.png)

表１に結果を示す。GPT-4は、ID条件およびOOD条件の両方で、text-davinci-003を上回り、想定通り両モデルともIDの方が高い精度を示す。few-shot exampleがなくても59%の精度を示し、shotを増やすとさらに精度が向上する。また、exampleが増えるにつれて、text-davinci-003とGPT-4の間の差が小さくなることも観察された。最近傍は、ID評価でわずかな性能向上を示した。興味深いことに、shotが1より大きい場合、OOD評価ではランダム選択が最近傍よりも優れた結果を示した。これは、テキストの類似性に基づいて例を選択すると過学習になるため、ランダム選択がより多様性をもつことができるからだと考えられる。
Microsoft Azure の最適化ではソリューションアーキテクトやエンジニアにとって使いやすいツールとしてコスト削減を行うことを示した。