MetaのAIツールで作業を最適化
How to Use Meta’s Rebalancer for Task Placement & Optimization
Metaがコンピューターの作業割り当てを最適化するツール「Rebalancer」の使い方を公開しました。データセンターの資源を効率的に管理できる一方、一部に課題も報告されています。
このチュートリアルでは、Metaの割り当てソルバーであるRebalancerを、C++コアとPythonバインディングで実装します。オブジェクト、コンテナ、ディメンション、スコープ、パーティションについて説明し、制約と目標を追加した後、ローカルサーチまたは厳密な混合整数ソルバーであるHiGHSを選択します。私たちは小さなデータセンターを構築し、ビジーなホストをドレインし、おもちゃのモデル、相互排他的なホスト、合成クラスター、および公開されている60のOR-Libraryインスタンスで2つのソルバーを比較します。私たちは、ソルバーのフラグではなく、返された割り当てを再評価することで、すべての計画を判断します。このビルドでは、24回の解決のうち、14回の解決で「solved」フラグがTrueと表示されたにもかかわらず、メモリが容量を超過したままでした。ローカルサーチ下のHARDは、エラーを発生させることなく違反する開始を返しました。スペルミスのspecキーは黙って無視され、enum名は拒否されます。タイミングはmacOS wheelを搭載したApple M4から得られたものであり、ColabのLinux wheelではタイミングが異なる場合があります。Copy Code Copied Use a different Browser import os import re import sys import json import math import time import random import hashlib import platform import tempfile import statistics import traceback import subprocess import collections import urllib.request RESULTS = {} # step -> headline (or the failure), saved to results.json after every step CLAIMS = [] # (step, claim, held) rows for the ledger in the last cell SOLVE_SECONDS = collections.Counter() # step -> seconds spent inside solve() CURRENT = ["1"] def banner(title): print("\n" + "=" * 78) print(title) print("=" * 78) def section(name): def wrap(fn): def run(*a, **kw): CURRENT[0] = name.split(".")[0] banner(name) t0 = time.time() try: out = fn(*a, **kw) RESULTS[name] = out if isinstance(out, str) else "ok" return out except Exception as e: RESULTS[name] = f"SKIPPED / FAILED -> {type(e).__name__}: {e}" print(f"\n[!] {name} did not complete: {type(e).__name__}: {e}") traceback.print_exc(limit=3) return None finally: print(f"\n[{time.time() - t0:.1f} s]") json.dump({"results": RESULTS, "claims": CLAIMS, "solve_
この記事について質問
記事の内容に答えます。記事外のことは都度ウェブで調べます。