• UseCase
  • 流通・小売り

アスクル、EC事業における“個口別れ”の解消に「進化計算」を適用

電通大、タイムインターメディアとの協働で処理速度を数百時間から数時間へ

奥平 等(ITジャーナリスト/コンセプト・プランナー)
2022年6月22日

「2の8000乗」という組み合わせから最適解を見いだす

 進化計算は、膨大な数の組み合わせの中から有望な解を見いだすのに長けている。しかし、その処理に複雑な計算ロジックや計算負荷が高い処理が含まれると、試行錯誤のための処理時間が長くなる。

 実際、8つの物流センターに在庫する1000商品を対象にした実証実験では、2の8000乗という組み合わせが生じる。同時に在庫を有する近い拠点から最小梱包で出荷するという複雑な配送ロジックが必要になる。これら2要素が重なった結果、進化計算の弱点が露呈された。実験当初のプロトタイプでは、1回の検索に数100時間を要したため「十分な検証さえできなかった」と三井氏は振り返る。

 そこで電通大・佐藤准教授の研究室では、アルゴリズムを洗練させることから取り組んだ。場面に応じてデータを組み替えながら、適切な計画を立案できるようにする。ところが開発を進めていくうちに、新たな問題が浮かんできた。「この商品は、この倉庫に配置するのが定石」など“現場の経験・知見”に基づいた意味を持つデータ、いわゆる暗黙知データの存在である。

 当初は暗黙知データを意識せずに開発を進めていたが、「暗黙知データをまとめて取り扱う」という方針転換によりブレークスルーを見いだした。膨大なデータを少し荒く見立てて組み合わせを探索することで精度を高めるという発想である。さらに、処理速度の高速化に向け、進化計算のビジネス実装経験が豊富なタイムインターメディアとの3者協働に踏み込んだ。

 その理由を佐藤准教授は、「最適化のポイントは本来、『簡単な数式で表す』ことにある。しかし今回は、それが難しかったため進化計算の出番になった。だが、進化計算の弱点である処理速度の問題を大幅に克服する必要があった。そこで研究室はアルゴリズムの洗練に的を絞り、高速化はタイムインターメディアに依頼することにした」と説明する(写真2)。

写真2:電気通信大学 情報工学研究科 情報学専攻 人工知能先端研究センター 准教授の佐藤 寛之 博士(工学)

 タイムインターメディアは進化計算に強みを持つITベンダーだ。最適化技術を用いた数独パズルは2018年、「世界一巨大なナンプレ」としてギネス世界記録に認定されている。2017年7月には同社「知識工学センター」を電通大構内に移してもいた。

 タイムインターメディア 知識工学センター センター長の藤原 博文 氏は、高速化のプロセスをこう説明する。

 「処理速度を高めるために、いくつかの段階を踏んだ。最初、Pythonで書かれていたソースプログラムのボトルネックの抽出し、手を入れてみたが若干の速度向上がみられた程度だった。そこで『Pythonだけでは限界がある』という認識のもと、C/C++、Rust、Cythonの複数言語を候補にボトルネック部分を書き替えた」(写真3)

写真3:タイムインターメディア 知識工学センター センター長の藤原 博文 氏

 最終的に残ったのはRustだ。メモリー効率が高く性能重視のサービスを実装できること、高いメモリー安全性とスレッド安全性を担保され信頼性が高いこと、豊富なツール群により生産性が見込まれることなどが選定理由である。

 Rustでの書き替えではまず、ボトルネック部分をPythonからRustへ1対1で置き換えた段階で75倍程度に処理速度は高まった。さらに無駄な計算の削除やアルゴリズムの最適化などにより500倍程度の高速化を達成できた。

並列処理でさらなる高速化に取り組む

 ただ、それをもってしても「実運用を視野に入れると、まだ厳しい状況が続いた」(藤原氏)。そこで藤原氏らが適用したのが並列処理である。具体的には、1つの問題を複数に分割して計算する進化計算における「島モデル」と呼ばれる並列処理手法を採用した。

 まずは島モデルを複数のコンピューターで同時に協調計算させる分散処理技術を試してみた。藤原氏は「島モデルのプログラム自体は難しくないものの、調整すべき点が多く、実行と確認を繰り返す必要があった。より高速になるよう、島モデルのパラメーターをより短時間で調整できるよう苦心した」と振り返る。

 次に1つのプロセサで複数の処理を並列に実行する島モデルを実装した。スピードを最優先課題にマルチスレッド処理を重視することで、数百時間を費やしていた処理を数時間にまで短縮できた。島モデルによるコンピューターの負荷軽減とRustの特性によって「速度だけでなく、安全性、安定性、確実性も向上した」と藤原氏は話す。

 アスクルでは現在、実証実験を通じて、商品在庫の配置変更、荷物の個口数の低減、在庫量の抑制、配送費削減、配送効率の向上など、さまざまな観点から運用を検証し、その効果を測定している。