ホームへ戻る

GitHub Repo

Graphify 0.9.66、ハッシュシードを固定してコードグラフの再構築結果のばらつきを低減

新版ではグラフ処理パイプラインのハッシュシードを固定し、直接抽出した関係を推論結果より優先する。修正は再構築時の差分比較に役立つが、モデルが生成する内容の再現性やバージョン間の一貫性は別途検証が必要だ。

CC BY-SA 2.5 · Image source
zh-Hant

Graphifyは9月22日に0.9.66をリリースし、同じコードから再構築してもグラフが変化し得る問題に対処するため、複数のコマンドでPythonのハッシュシードを固定した。新版では重複する関係のマージ規則も調整し、直接抽出された根拠を推論結果より優先する。[リリース告知](https://github.com/Graphify-Labs/graphify/releases/tag/v0.9.66)

Graphifyはコードを解析してノードや呼び出し、インポートなどの関係に変換し、コーディングエージェントにクエリ、経路追跡、サブグラフを提供する。コード解析は主にローカルで実行されるが、文書やメディアの意味処理ではモデルを呼び出す場合がある。そのため、構造解析とモデルが生成する内容では、再現性を確保する条件を分けて考える必要がある。[プロジェクト概要](https://github.com/Graphify-Labs/graphify)

今回の修正はupdate、extract、cluster-only、labelを対象とする。プロセスを一度再起動してPYTHONHASHSEEDを設定することで、Leiden、Louvainによるコミュニティ検出にハッシュシードが及ぼす影響を抑え、手動コマンドとGit hookを契機とする再構築の動作をそろえる。[リリース告知](https://github.com/Graphify-Labs/graphify/releases/tag/v0.9.66) Pythonの公式ドキュメントによると、シードを固定すれば、対象となる型のハッシュ値を再現できる。このことからも、コミュニティ検出アルゴリズムの乱数パラメータを固定するだけでは、データ処理パイプライン全体をカバーできるとは限らないことが分かる。[Pythonドキュメント](https://docs.python.org/3/using/cmdline.html#envvar-PYTHONHASHSEED)

関係のマージも、到着順だけでは決まらなくなる。同じ関係で競合が生じた場合、新版はEXTRACTEDを優先して保持し、次にINFERREDを考慮する。これらのラベルは根拠の出所を示すものであり、正しさを表す較正済みの確率とは見なせない。エンジニアリングチームにとって、トレーサビリティはエージェントがどの関係を利用したかを確認する助けになるが、ソースコードに立ち返って照合する必要は依然としてある。[リリース告知](https://github.com/Graphify-Labs/graphify/releases/tag/v0.9.66)

以上の仕組みから推測すると、グラフをバージョン管理や継続的インテグレーションに組み込んでいるチームは、コードの変更とは無関係な差分を減らし、レビュー担当者が実際に追加された依存関係を見分けやすくなると期待できる。エージェントが取得するコミュニティの境界が毎回異なれば、タスクに使うコンテキストも変わる可能性がある。そのため、グラフ構築コマンドが成功したかを確認するだけでなく、回答品質とともに再構築の一貫性を測定し、後から調査できるよう、その時点のグラフを保存しておくことにも意義がある。

PyPIでは正式パッケージgraphifyy 0.9.66が公開されており、公開時のアテステーションはリリース告知と同じコミットa5957aaを指しているため、デプロイ元の確認に利用できる。[パッケージ情報](https://pypi.org/project/graphifyy/0.9.66/) 導入時には、入力とパッケージ、パーサーのバージョンを固定し、再構築後のノード、エッジ、コミュニティ分割を比較したうえで、エージェントの検索結果をテストするとよい。これは検証方法の提案であり、現時点の告知には、この修正によるタスク成功率の改善を示すデータはない。また、ハッシュシードを固定しても、モデルが生成するラベルやバージョンをまたぐ出力の完全な一致は保証されない。

出典

  1. Graphify v0.9.66 發行公告
  2. graphifyy 0.9.66 套件與發行證明
  3. Graphify 專案與技術說明
  4. Python 命令列與環境變數:PYTHONHASHSEED