File size: 2,646 Bytes
a8351e8
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
{
 "name": "draftzero-fdn-gnn-full-r1",
 "arch": {
  "type": "graph",
  "d_model": 256,
  "heads": 4,
  "ff": 1024,
  "dropout": 0.1,
  "passes": 2,
  "global_layers": 2,
  "head_hidden": 256,
  "leaf_dropout": 0.0,
  "local_depth": 1
 },
 "num_leaves": 1932,
 "num_edge_labels": 22,
 "parameters": 13412101,
 "node_types": {
  "ROOT": 0,
  "PLAYER": 1,
  "ZONE": 2,
  "STACK_OBJECT": 3,
  "PERMANENT": 4,
  "CARD": 5,
  "ABILITY": 6,
  "LEAF": 7
 },
 "type_node_ids": {
  "ROOT": 0,
  "PLAYER": 499558809,
  "ZONE": 1485202092,
  "STACK_OBJECT": 191223077,
  "PERMANENT": 11906542,
  "CARD": 587455872,
  "ABILITY": 1229966541
 },
 "value_bounds": [
  -5,
  -4,
  -3,
  -2,
  -1,
  0,
  1,
  2,
  3,
  4,
  5,
  6,
  7,
  8,
  9,
  10,
  11,
  12,
  13,
  14,
  15,
  16,
  17,
  18,
  19,
  20,
  21,
  26,
  31,
  41,
  61
 ],
 "feature_hash": {
  "algorithm": "xmage_feature_hash",
  "version": 2,
  "bins": 2147483647,
  "python": "graph_net.feature_id(name)",
  "java": "StateEncoder.indexFor(StateEncoder.hash64(name))"
 },
 "graph_types": {
  "PRIORITY": 0,
  "CHOOSE_TARGET": 3,
  "CHOOSE_USE": 5
 },
 "heads": {
  "priority": "per node, read at ABILITY nodes (a play is its ability's node; Pass has one)",
  "target": "per node, read at CARD / PERMANENT / STACK_OBJECT / PLAYER nodes (Stop Choosing is a CARD); 'attack with X?' is a target choice between Stop Choosing (no) and the defending player (yes)",
  "use": "[no, yes] logits for a yes/no question that isn't an attack",
  "value": "tanh(value_x), the acting player's expected result in -1..1; the fitted temperature (T = 1.607) is folded into the value head's last layer, so P(win) = sigmoid(2 * value_x)"
 },
 "source": {
  "checkpoint": "danbrooks/draftzero-checkpoints:gnn/full_r1/best_policy_calibrated.pt.gz",
  "checkpoint_sha256": "3ee0839fbb6ed9a11f414ee290d2730335cf07490d76649c49d960cdc1f60706",
  "model_code": "danieljbrooks/draft-zero@2a461518985e3b2bb393bddac4649e217f8fddfe:src/draftzero/gameplay/graph_net.py (MageZero's NetGraph, WillWroble/MageZero@de225045c82a2ddc107b99ac833e21ab6d566279, graph-encoder)",
  "encoder": "WillWroble/mage@e4afc9c77ba7e4a6dbc24966cbdc6dc0819e0bff (graph-encoder) Mage.Server.Plugins/Mage.Player.AI/src/main/java/mage/player/ai/encoder, vendored at danieljbrooks/draft-zero@2a461518985e3b2bb393bddac4649e217f8fddfe:java/mzbridge/src/org/draftzero/mzbridge/graph",
  "engine": "danieljbrooks/mage@48e4918413392523a5f9d7915e1f33941ddea21e (v0.2-generalist)",
  "search": "danieljbrooks/draft-zero@2a461518985e3b2bb393bddac4649e217f8fddfe:java/mzbridge/src/mage/player/ai (BenchPlayer, BenchSearch, GraphNet, GraphMCTSPlayer)"
 }
}