From d1da902dbdab3ad5235c3cedc81396ea1a154957 Mon Sep 17 00:00:00 2001 From: Benny Chen Date: Fri, 6 Mar 2026 16:51:14 -0800 Subject: [PATCH 1/6] feat: harden FrozenLake VL rollouts --- .../frozen_lake/assets/img/cracked_hole.png | Bin 0 -> 706 bytes .../frozen_lake/assets/img/elf_down.png | Bin 0 -> 935 bytes .../frozen_lake/assets/img/elf_left.png | Bin 0 -> 872 bytes .../frozen_lake/assets/img/elf_right.png | Bin 0 -> 858 bytes .../frozen_lake/assets/img/elf_up.png | Bin 0 -> 842 bytes .../examples/frozen_lake/assets/img/goal.png | Bin 0 -> 526 bytes .../examples/frozen_lake/assets/img/hole.png | Bin 0 -> 676 bytes .../examples/frozen_lake/assets/img/ice.png | Bin 0 -> 494 bytes .../examples/frozen_lake/assets/img/stool.png | Bin 0 -> 651 bytes .../examples/frozen_lake/frozen_lake_env.py | 16 + .../frozen_lake/frozen_lake_rollout.py | 820 ++++++++++++++++-- .../frozen_lake/frozen_lake_schema.py | 52 +- training/examples/frozen_lake/rendering.py | 119 +++ training/examples/frozen_lake/test_masking.py | 26 + .../examples/frozen_lake/train_frozen_lake.py | 28 +- .../validation_screenshots/kimi-ep-logs.png | Bin 0 -> 284029 bytes .../qwen3-vl-ep-logs.png | Bin 0 -> 254155 bytes .../examples/frozen_lake/verify_rollout.py | 695 ++++++++++++++- training/pyproject.toml | 2 + .../test_frozen_lake_verify_validation.py | 193 +++++ .../unit/test_frozen_lake_visual_rollout.py | 320 +++++++ 21 files changed, 2177 insertions(+), 94 deletions(-) create mode 100644 training/examples/frozen_lake/assets/img/cracked_hole.png create mode 100644 training/examples/frozen_lake/assets/img/elf_down.png create mode 100644 training/examples/frozen_lake/assets/img/elf_left.png create mode 100644 training/examples/frozen_lake/assets/img/elf_right.png create mode 100644 training/examples/frozen_lake/assets/img/elf_up.png create mode 100644 training/examples/frozen_lake/assets/img/goal.png create mode 100644 training/examples/frozen_lake/assets/img/hole.png create mode 100644 training/examples/frozen_lake/assets/img/ice.png create mode 100644 training/examples/frozen_lake/assets/img/stool.png create mode 100644 training/examples/frozen_lake/rendering.py create mode 100644 training/examples/frozen_lake/validation_screenshots/kimi-ep-logs.png create mode 100644 training/examples/frozen_lake/validation_screenshots/qwen3-vl-ep-logs.png create mode 100644 training/tests/unit/test_frozen_lake_verify_validation.py create mode 100644 training/tests/unit/test_frozen_lake_visual_rollout.py diff --git a/training/examples/frozen_lake/assets/img/cracked_hole.png b/training/examples/frozen_lake/assets/img/cracked_hole.png new file mode 100644 index 0000000000000000000000000000000000000000..55930420493b336ba5961f45c27fec709bc1bcad GIT binary patch literal 706 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE3?yBabR7dyEa{HEjtmSN`?>!lvVtU&J%W50 z7^+km7#f-x7=Hc-(k~epN(~qoUL`OvSj}Ky5YL|!f7A`A)-1p$#P!Ux|F6IP{Qv*I zT={;Dl|OZsepQQmU`?+hk!I$QtW|M1^v$A9a6|5aD~KlM;h z8E67ylDE4HQyO+eYfGPX*0{BzH@pjEY&zOt>0jC(a|4?+!8f6 z&66%a=Ubu1c4f+%8bjN&Q`Yp&_$0tkbW%I{cjW>`pH0f!a)1AQ*`b>g@JmYZK~s(J zA)afcHgSth^EuRCOLOcw%XGy!dhNt{3|ZNp<_Zivw#H=&y?hhBID$AD?imSG=Lc7* zG%_vN^|{n#wNgZD{VRsBWmhNfGCo#$uqTaS!O^d8gbS(|4)kbLoirEz*(JST$Q<-68pSMROt3ac=)TE-p_SpJpa!48{yY@5VcHxxu1-FxZU69Fy8>pCII z>FsBZH7dEzf3{N2ZZ?lpdDIgV(?ez)G7c?eP7L3leqlebTE@ycP})^mJ?VMNx0Ise z>*EfVEO)swH#0(Ea_*ABSll8*7z=H=oYc>CVE69!U+fuOR{olH;TE}L4 z-acMf@%G=&Z0EP(A9wCJU9&xxPwcPKKgJ1cBAHDaH!KH6iE4>!L`h0wNvc(HQ7VvP zFfuSQ(lr1g!w^GbDfx*+& K&t;ucLK6Tb@)=D4 literal 0 HcmV?d00001 diff --git a/training/examples/frozen_lake/assets/img/elf_down.png b/training/examples/frozen_lake/assets/img/elf_down.png new file mode 100644 index 0000000000000000000000000000000000000000..afa3daf1387c93fa81e34c0b0cc258fa23a5ee36 GIT binary patch literal 935 zcmV;Y16cftP)EX>4Tx04R}tkv&MmKpe$iQ?*tr4ptCx$WWauh>AFB6^c+H)C#RSm|XfHG-*gu zTpR`0f`cE6RR7z_(b9vW|%hdI`Pz| zZE)Tv4zq%+5}y-~nsh*nM%$Phl#~}6Dv*33Z_OpNgPo%o$`gW z$13M7&RVg|>i6U?3}yA@C9cyPLL3WNgai=^%Gf{=HlnoZq*zGOeyoLm(Dh5?QpmLd zMvi%uph0&1;D7MDTPrs)?j?m{K>Lg1d<+ADU7%KRobO}Dsht4+XW&Y2_)Aq_`jhlZ zLyH^%z1zUWbwgA3fXf|V;K`6p*_He>gy{D4^000SaNLh0L z01FcU01FcV0GgZ_0005DNklUYn@*dwQSe z_w;;!&-eFzzhJ?Fh5ro2<<=FKTmQ)&(oe`M#O25`XF1Z1-O_Z1+zwWVr z*uUj zD3ks>AnW!xHd3c{_PQ0kM2f3GM|BkdeUBHE1xo>V2tTr3TJvT|5d}<{&EX>4Tx04R}tkv&MmKpe$iQ?*tr4ptCx$WWauh>AFB6^c+H)C#RSm|XfHG-*gu zTpR`0f`cE6RR7z_(b9vW|%hdI`Pz| zZE)Tv4zq%+5}y-~nsh*nM%$Phl#~}6Dv*33Z_OpNgPo%o$`gW z$13M7&RVg|>i6U?3}yA@C9cyPLL3WNgai=^%Gf{=HlnoZq*zGOeyoLm(Dh5?QpmLd zMvi%uph0&1;D7MDTPrs)?j?m{K>Lg1d<+ADU7%KRobO}Dsht4+XW&Y2_)Aq_`jhlZ zLyH^%z1zUWbwgA3fXf|V;K`6p*_He>gy{D4^000SaNLh0L z01FcU01FcV0GgZ_0004ZNklHB-&gSN-P$v zU|_g$NdQGoeA@@whCq<9{eQs`_KZ${X!HePIt+xypZ@pz`n!b_b zEJ$)W5M*rsA7U{CT)g#`;s4FK49)vQ$g-T|5LkEiAY*VL!+%>T2_#V+1_p)~^r;Ji zjP3tV5&Fe&{1p#FpC1>4hTaEwSwK!HNODQYz`(#zo5se_=f}lx#5IWi1rY-S14Azt z6T`O?uNWp=*v6p4Ai57TkGHd*~oI& ym>5&xb;Iccb7&R<$d14UNVR+vjDk@xC;$Lv&vj6T4hrD_0000EX>4Tx04R}tkv&MmKpe$iQ?*tr4ptCx$WWauh>AFB6^c+H)C#RSm|XfHG-*gu zTpR`0f`cE6RR7z_(b9vW|%hdI`Pz| zZE)Tv4zq%+5}y-~nsh*nM%$Phl#~}6Dv*33Z_OpNgPo%o$`gW z$13M7&RVg|>i6U?3}yA@C9cyPLL3WNgai=^%Gf{=HlnoZq*zGOeyoLm(Dh5?QpmLd zMvi%uph0&1;D7MDTPrs)?j?m{K>Lg1d<+ADU7%KRobO}Dsht4+XW&Y2_)Aq_`jhlZ zLyH^%z1zUWbwgA3fXf|V;K`6p*_He>gy{D4^000SaNLh0L z01FcU01FcV0GgZ_0004LNklHWTeCaETkxY z=_P=|*Us1tQ$hrsbyJPgile;Do`c*S7gTgJe^z`$_v z)>{UK=^JV5fS}1SaLeu=n9FeBh7QAl8`~HPO1&8L)r1*nnh4jOJ;)ebI1l1e1_lNL z-!g`RQZI(X&tA~JBt$O{YMtINFsdh`_&T_79?4|^*$%Lkl0XqV{Oko;1rZ}TmcR58 zfR}_fE(tIcZTiMwDfWdS=N%i#j-a?8I^r6{(C5d+P@Bd^zib$Cfdj(0Ai*$!VH?Bh zAFmj=EI1gF82-^O5k~((_3=`cU$jpH8m0~@Ft*me|FeRs~0Bvb}8~70AkN^Mx07*qoM6N<$f{P4%ZU6uP literal 0 HcmV?d00001 diff --git a/training/examples/frozen_lake/assets/img/elf_up.png b/training/examples/frozen_lake/assets/img/elf_up.png new file mode 100644 index 0000000000000000000000000000000000000000..933f1f0017848386af3ec5ac7c5f6763cd9c05fb GIT binary patch literal 842 zcmV-Q1GW5#P)EX>4Tx04R}tkv&MmKpe$iQ?*tr4ptCx$WWauh>AFB6^c+H)C#RSm|XfHG-*gu zTpR`0f`cE6RR7z_(b9vW|%hdI`Pz| zZE)Tv4zq%+5}y-~nsh*nM%$Phl#~}6Dv*33Z_OpNgPo%o$`gW z$13M7&RVg|>i6U?3}yA@C9cyPLL3WNgai=^%Gf{=HlnoZq*zGOeyoLm(Dh5?QpmLd zMvi%uph0&1;D7MDTPrs)?j?m{K>Lg1d<+ADU7%KRobO}Dsht4+XW&Y2_)Aq_`jhlZ zLyH^%z1zUWbwgA3fXf|V;K`6p*_He>gy{D4^000SaNLh0L z01FcU01FcV0GgZ_00045Nkl@CvRrxNsizqkw^dfuYvv4FdxM z1Jn@+0JFS#p9lj31Myjsk(_J@a|AkQ-X}tGS-?V0L3H4T4i1?Y40J6AH1s|&FfcGM z+_)q_zjEM+YY>X%$ZVJ#O`~8!_cn&2N8cDMPy9m5hTj+_T-ZkY$_TkYTFL@(1Tvr0 zL`afi4O52{1_lNOt$+V#GcYhPTw`KP#m2vJ`oJ8Tg#gSExBw}ZkAhJ!3I+uL00&Qq Uf&~GF=Kufz07*qoM6N<$f?yV5j{pDw literal 0 HcmV?d00001 diff --git a/training/examples/frozen_lake/assets/img/goal.png b/training/examples/frozen_lake/assets/img/goal.png new file mode 100644 index 0000000000000000000000000000000000000000..709e4b4891351dff4d59fda03e7b940de70c5185 GIT binary patch literal 526 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE3?yBabR7dyEa{HEjtmSN`?>!lvVtU&J%W50 z7^+km7#f-x7=Hc-(k~epN(~qoUL`OvSj}Ky5YL|!f7A`A);Pc?#P$FG|5NQ5RtFly zDo(Ysk6U=)E`$qYf7t5izhuYxQteJ_9-oX>ZEaVeEKt2?-3?x#cJ`7WzhEE@1V1OT zE_eW>8I!!-T^Kr8Wj%l#&H|6fVg?3oVGw3ym^DWND9B#o>Fdh=jER}SKxCnUk3CRm zgQtsQh{frr6EE@|R^V_g-R7M5;{X5LomZwWJh^GR>h8`jZhaz#OaBL*bNO;&=M<)F zJ%*`K*&&KbJCY}FuT7h`POss?64s46C%HP*17kg0=4mrXCUG|^ANW!{qgNSQr?YN&`%1Gll-J>v-P1ht8G1dxUc8zm8lpTw zOu?>vzq;jg50+!;3jdO7xO@Js6Kp7Unfo%mgpv6<|E0Od<<|q!lvVtU&J%W50 z7^+km7#f-x7=Hc-(k~epN(~qoUL`OvSj}Ky5YL|!f7A`A)-1p$#P!Ux|F6IP{Qv*I zT={;Dl|OZsepQumjh|HFTy9sjNO{a0P_|LuxB zjX)C^lf2zsn9{gwQh*%J0*}aI1_o|n5N2eUHAey{$X?><>&pI&iIGQB^~BpNpMZM8 zJY5_^EKbKx?w!=Ez|$f;=K;t3 zy{-ah{$R%G^j4Fs_l1nbm0u*+AAZy9dFq+``llBUJec*J zJve0Ju~m~^{`|nzV{1`R60yYKcgdy3rn5r3m*1GNZsYN1VmG*-J@`K3K2y}YXO`wC zH=ogSXSl(ApXc{ZFf?YaAw-&YY&UTYNBrNX2Q}Sw}W99NDiCW#mU-kQH=KNPu z_qFH~`}w9NP9=}u*T}!`;-flOv7={2{#VGbpD*!=TqYI%ao>*Ay|;I?)FK#IZ0z{p6~0Ei4j3=OSJjI0a{v<(b_NSwWJ?9znhg z3{|QO3=Pc;3_t$^>6Z))r3MTPuM!v-tY$DUi04m=Kk5cl%NgJk;(F%U|JPrC{{R1< zcb?an+uemJjk_iVq@uthvY3H^TNs2H8D`Cq01C2~c>21sKVxF#(a>3;6)O%D zI_v4;7$R|5b%JBo5eFWY>V&=Rw&{O4_9va>PCFr+~WrIc1w4*uiDDO3!4R& zzH>X^a4GHp_p4JsrHXcsY^RsZ0t^k?GZ3uZ{#}9 z%HQkYzYf>K4a%J%^M&gg`&)GnHWsA1ec3#9!4KureMc9DT`f@G=ka}xNVity1J1-h z3QDn+W>O#6BXcsD4_>`t3iOz2iEBhjN@7W>RdP`(kYX@0Ff!6L03yQ>LqjVQLn|X= uZ39Cq0|TAMNjFe5EX>4Tx04R}tkv&MmKpe$iQ?;TM2Q!E`WT;LSL`4)AtwIqhgj%6h2lLS{Xws0R zxHt-~1qVMCs}3&Cx;nTDg5U>;qmz@OiFPiWsYU?W-2*P%o7Xw7M5FBDVQ4Z1aU;wbjs(_ z9;=ME7;B}9(zqvkVK}R=EHj!v2}0hc>K|C1q^k}Cyia=9Gven#Jv0s3x%t~IZ>#y(CTfE0C=xB(6h zf#E!5ulu~av$eN>&ouh`0qquY*e;v{LjV8(24YJ`L;(K){{a7>y{D4^000SaNLh0L z01FcU01FcV0GgZ_0001*Nkly<; zW4W!A1cRO|H;VYB$6py380`O(>If!sLIB-zTw*kH05!qTbO0p235(Gr5i&3^FdTmN zg5mJ90Sp0KDG3G!1_p*}OpK}5m>5%$#c1w;YfOx(ho8N`8Y(cy(7YhhFm*`5CVu1e lfjOgP`zRO%qhJ(}3INZBCH4vhlKcPw002ovPDHLkV1ndR6NCT& literal 0 HcmV?d00001 diff --git a/training/examples/frozen_lake/frozen_lake_env.py b/training/examples/frozen_lake/frozen_lake_env.py index c8f1d6bd..e9ebfbc8 100644 --- a/training/examples/frozen_lake/frozen_lake_env.py +++ b/training/examples/frozen_lake/frozen_lake_env.py @@ -8,6 +8,7 @@ from typing import Any, Dict, Iterable, List, Sequence, Tuple from training.examples.frozen_lake.frozen_lake_schema import FROZEN_LAKE_ACTIONS +from training.examples.frozen_lake.rendering import render_frozen_lake_png_data_url ActionToDelta = { "LEFT": (0, -1), @@ -150,12 +151,14 @@ def __init__(self, map_rows: Sequence[str], max_steps: int = 30): self._step_count = 0 self._terminated = False self._truncated = False + self._last_action: str | None = None def reset(self) -> Dict[str, Any]: self._position = 0 self._step_count = 0 self._terminated = False self._truncated = False + self._last_action = None return self._current_state(action="RESET", reward=0.0) def step(self, action: str) -> Dict[str, Any]: @@ -164,6 +167,7 @@ def step(self, action: str) -> Dict[str, Any]: raise ValueError(f"Invalid action '{action}'. Expected one of {FROZEN_LAKE_ACTIONS}") if self._terminated or self._truncated: + self._last_action = normalized_action return self._current_state(action=normalized_action, reward=0.0) row = self._position // self._side @@ -174,6 +178,7 @@ def step(self, action: str) -> Dict[str, Any]: self._position = row * self._side + col self._step_count += 1 + self._last_action = normalized_action tile = self._map_rows[row][col] reward = 1.0 if tile == "G" else 0.0 @@ -199,6 +204,17 @@ def _current_state(self, action: str, reward: float) -> Dict[str, Any]: ) return result.as_tool_result() + def render_image_data_url(self, *, cell_size: int = 96) -> str: + row = self._position // self._side + col = self._position % self._side + return render_frozen_lake_png_data_url( + self._map_rows, + agent_row=row, + agent_col=col, + last_action=self._last_action, + cell_size=cell_size, + ) + def build_frozen_lake_tool_env(environment_context: Dict[str, Any] | None, max_steps: int) -> FrozenLakeToolEnv: """Create a FrozenLakeToolEnv from dataset ``environment_context``.""" diff --git a/training/examples/frozen_lake/frozen_lake_rollout.py b/training/examples/frozen_lake/frozen_lake_rollout.py index 3cea16ba..5ab80b12 100644 --- a/training/examples/frozen_lake/frozen_lake_rollout.py +++ b/training/examples/frozen_lake/frozen_lake_rollout.py @@ -14,11 +14,13 @@ from types import SimpleNamespace from typing import Any, Dict, Iterable, List, Optional, Tuple +from fireworks import AsyncFireworks from openai.types import CompletionUsage from eval_protocol.integrations.fireworks_v1_completions_client import ( FireworksV1CompletionsClient, ParsedToolCall, + _normalize_token_id_sequence, strip_chat_special_tokens, to_openai_tool_calls, ) @@ -41,6 +43,530 @@ ) logger = logging.getLogger(__name__) +_TOKENIZER_CACHE: Dict[str, Any] = {} + +DEFAULT_SYSTEM_PROMPT_INSTRUCTIONS = ( + "You are an RL policy for FrozenLake.\n" + "Pick the action that moves toward G while avoiding H.\n" + "Always respond with exactly one tool call and no text." +) + +DEFAULT_VISUAL_PROMPT_TEMPLATE = ( + "You are playing FrozenLake. The image shows the current grid. " + "The current textual observation is below.\n" + "{observation}\n\n" + "Tiles are labeled S, F, H, and G. The agent is marked with a red dot. " + "Use exactly one lake_move tool call with action LEFT, DOWN, RIGHT, or UP." +) + + +def _get_hf_tokenizer(tokenizer_name_or_path: str): + tok = _TOKENIZER_CACHE.get(tokenizer_name_or_path) + if tok is not None: + return tok + from transformers import AutoTokenizer + + tok = AutoTokenizer.from_pretrained(tokenizer_name_or_path, trust_remote_code=True) + _TOKENIZER_CACHE[tokenizer_name_or_path] = tok + return tok + + +def _is_kimi_tokenizer_name(tokenizer_name_or_path: str) -> bool: + lowered = str(tokenizer_name_or_path or "").lower() + return "kimi-k2.5" in lowered or "kimi-k2p5" in lowered + + +def _build_multimodal_image_content(*, image_url: str, text: Optional[str] = None) -> List[Dict[str, Any]]: + parts: List[Dict[str, Any]] = [ + {"type": "image_url", "image_url": {"url": str(image_url)}}, + ] + if text is not None: + parts.append({"type": "text", "text": str(text)}) + return parts + + +def _normalize_multimodal_content(content: Any) -> Any: + if content is None or isinstance(content, str): + return content + if not isinstance(content, list): + return str(content) + + normalized_parts: List[Dict[str, Any]] = [] + for part in content: + if isinstance(part, dict): + part_type = str(part.get("type") or "").strip().lower() + if part_type == "image": + normalized_parts.append({"type": "image"}) + continue + if part_type == "image_url": + image_url = part.get("image_url") + if isinstance(image_url, dict): + normalized_parts.append({"type": "image_url", "image_url": dict(image_url)}) + elif image_url is not None: + normalized_parts.append({"type": "image_url", "image_url": {"url": str(image_url)}}) + else: + normalized_parts.append({"type": "image"}) + continue + if part_type == "text": + normalized_parts.append({"type": "text", "text": str(part.get("text") or "")}) + continue + if "text" in part: + normalized_parts.append({"type": "text", "text": str(part.get("text") or "")}) + continue + normalized_parts.append({"type": "text", "text": str(part)}) + return normalized_parts + + +def _sanitize_messages_for_multimodal_template(messages: Iterable[Dict[str, Any]]) -> List[Dict[str, Any]]: + sanitized: List[Dict[str, Any]] = [] + for msg in messages: + sanitized_msg: Dict[str, Any] = { + "role": str(msg.get("role", "user")), + "content": _normalize_multimodal_content(msg.get("content")), + } + if msg.get("tool_calls") is not None: + sanitized_msg["tool_calls"] = msg.get("tool_calls") + if msg.get("tool_call_id") is not None: + sanitized_msg["tool_call_id"] = msg.get("tool_call_id") + if msg.get("name") is not None: + sanitized_msg["name"] = msg.get("name") + sanitized.append(sanitized_msg) + return sanitized + + +def _build_multimodal_fallback_prompt_text( + messages: List[Dict[str, Any]], + tools: Optional[List[Dict[str, Any]]], +) -> str: + chunks: List[str] = [] + if tools: + chunks.append("TOOLS:") + for tool in tools: + function = tool.get("function", {}) + chunks.append( + json.dumps( + { + "name": function.get("name"), + "description": function.get("description"), + "parameters": function.get("parameters"), + }, + ensure_ascii=False, + separators=(",", ":"), + ) + ) + chunks.append("") + + for msg in messages: + role = str(msg.get("role", "user")).upper() + content = msg.get("content") + if isinstance(content, list): + rendered_parts: List[str] = [] + for part in content: + if not isinstance(part, dict): + rendered_parts.append(str(part)) + continue + part_type = str(part.get("type") or "").strip().lower() + if part_type in {"image", "image_url"}: + rendered_parts.append("") + else: + rendered_parts.append(str(part.get("text") or "")) + rendered = "".join(rendered_parts) + else: + rendered = str(content or "") + chunks.append(f"{role}: {rendered}") + if msg.get("tool_calls"): + chunks.append(f"{role}_TOOL_CALLS: {json.dumps(msg['tool_calls'], ensure_ascii=False)}") + chunks.append("ASSISTANT:") + return "\n".join(chunks) + + +def _build_visual_user_prompt( + *, + prompt_template: Optional[str], + observation: str, + default_prompt: str, +) -> str: + template = str(prompt_template or default_prompt) + if "{observation}" in template: + return template.replace("{observation}", observation) + observation_suffix = f"\n\nCurrent textual observation:\n{observation}" if observation else "" + return f"{template.rstrip()}{observation_suffix}" + + +def _strip_trailing_text_suffix(text: str, suffix: str) -> str: + if suffix and text.endswith(suffix): + return text[: -len(suffix)] + return text + + +def _strip_trailing_token_suffix(token_ids: List[int], suffix_ids: List[int]) -> Tuple[List[int], int]: + normalized_token_ids = [int(x) for x in list(token_ids)] + normalized_suffix_ids = [int(x) for x in list(suffix_ids)] + if ( + normalized_suffix_ids + and len(normalized_token_ids) >= len(normalized_suffix_ids) + and normalized_token_ids[-len(normalized_suffix_ids):] == normalized_suffix_ids + ): + return normalized_token_ids[:-len(normalized_suffix_ids)], len(normalized_suffix_ids) + return normalized_token_ids, 0 + + +def _build_kimi_toolcall_generation_prefill_token_ids(tokenizer_name_or_path: str) -> List[int]: + if not _is_kimi_tokenizer_name(tokenizer_name_or_path): + return [] + tokenizer = _get_hf_tokenizer(tokenizer_name_or_path) + return _normalize_token_id_sequence( + tokenizer.encode("<|tool_calls_section_begin|>", add_special_tokens=False) + ) + + +def _build_kimi_toolcall_generation_prefill_text(tokenizer_name_or_path: str) -> str: + if not _is_kimi_tokenizer_name(tokenizer_name_or_path): + return "" + return "<|tool_calls_section_begin|>" + + +class FireworksV1ImageCompletionsClient: + """Multimodal `/v1/completions` client that mirrors local tokenized chat mode.""" + + def __init__( + self, + *, + model_id: str, + tokenizer_name_or_path: str, + api_key: Optional[str] = None, + base_url: Optional[str] = None, + temperature: float = 1.0, + max_tokens: int = 256, + request_params: Optional[Dict[str, Any]] = None, + logprobs: bool = False, + enable_thinking: Optional[bool] = None, + tool_call_parser=None, + default_tools: Optional[List[Dict[str, Any]]] = None, + ): + self.model_id = model_id + self.tokenizer_name_or_path = tokenizer_name_or_path or model_id + self.temperature = temperature + self.max_tokens = max_tokens + self.request_params = dict(request_params or {}) + self.logprobs = logprobs + self.enable_thinking = enable_thinking + self.tool_call_parser = tool_call_parser + self.default_tools = default_tools or [] + self._tokenizer = None + self._client = AsyncFireworks(api_key=api_key, base_url=base_url) + + async def close(self) -> None: + await self._client.close() + + def _get_tokenizer(self): + if self._tokenizer is None: + self._tokenizer = _get_hf_tokenizer(self.tokenizer_name_or_path) + return self._tokenizer + + def _thinking_kwargs(self) -> Dict[str, Any]: + if self.enable_thinking is not None: + return {"thinking": self.enable_thinking} + return {} + + def _strip_generation_think_from_token_ids(self, token_ids: List[int]) -> List[int]: + if self.enable_thinking is not False or not _is_kimi_tokenizer_name(self.tokenizer_name_or_path): + return token_ids + tokenizer = self._get_tokenizer() + think_suffix_ids = _normalize_token_id_sequence( + tokenizer.encode("", add_special_tokens=False) + ) + if think_suffix_ids and token_ids[-len(think_suffix_ids):] == think_suffix_ids: + return token_ids[:-len(think_suffix_ids)] + return token_ids + + def _strip_generation_think_from_text(self, text: str) -> str: + if self.enable_thinking is not False or not _is_kimi_tokenizer_name(self.tokenizer_name_or_path): + return text + stripped = _strip_trailing_text_suffix(text, "") + stripped = _strip_trailing_text_suffix(stripped, "\n") + return stripped + + def _strip_generation_assistant_suffix_from_text(self, text: str) -> str: + return _strip_trailing_text_suffix(text, self.assistant_turn_suffix_text()) + + def _apply_chat_template( + self, + *, + messages: List[Dict[str, Any]], + tools: Optional[List[Dict[str, Any]]], + tokenize: bool, + add_generation_prompt: bool, + ) -> Any: + tokenizer = self._get_tokenizer() + sanitized_messages = _sanitize_messages_for_multimodal_template(messages=messages) + thinking_kw = self._thinking_kwargs() + try: + return tokenizer.apply_chat_template( + sanitized_messages, + tools=tools, + tokenize=tokenize, + add_generation_prompt=add_generation_prompt, + **thinking_kw, + ) + except Exception as exc: + if tools: + logger.debug("Multimodal chat template with tools failed, retrying without tools: %s", exc) + return tokenizer.apply_chat_template( + sanitized_messages, + tokenize=tokenize, + add_generation_prompt=add_generation_prompt, + **thinking_kw, + ) + raise + + def build_prompt_token_ids( + self, + *, + messages: List[Dict[str, Any]], + tools: Optional[List[Dict[str, Any]]], + ) -> List[int]: + tokenizer = self._get_tokenizer() + try: + token_ids = self._apply_chat_template( + messages=messages, + tools=tools, + tokenize=True, + add_generation_prompt=True, + ) + return self._strip_generation_think_from_token_ids( + _normalize_token_id_sequence(token_ids) + ) + except Exception as exc: + logger.debug("Multimodal tokenized prompt build failed, using text fallback: %s", exc) + fallback_prompt = self.build_prompt_text(messages=messages, tools=tools) + return _normalize_token_id_sequence(tokenizer.encode(fallback_prompt, add_special_tokens=False)) + + def build_prompt_text( + self, + *, + messages: List[Dict[str, Any]], + tools: Optional[List[Dict[str, Any]]], + ) -> str: + try: + prompt_text = str( + self._apply_chat_template( + messages=messages, + tools=tools, + tokenize=False, + add_generation_prompt=True, + ) + ) + return self._strip_generation_think_from_text(prompt_text) + except Exception as exc: + logger.warning( + "Multimodal chat template build failed for %s: %s", + self.tokenizer_name_or_path, + exc, + ) + sanitized_messages = _sanitize_messages_for_multimodal_template(messages=messages) + return self._strip_generation_think_from_text( + _build_multimodal_fallback_prompt_text(sanitized_messages, tools=tools) + ) + + def build_tool_response_suffix_token_ids( + self, + *, + tool_message: Dict[str, Any], + ) -> List[int]: + tokenizer = self._get_tokenizer() + suffix_messages = [tool_message] + try: + token_ids = self._apply_chat_template( + messages=suffix_messages, + tools=None, + tokenize=True, + add_generation_prompt=True, + ) + return self._strip_generation_think_from_token_ids( + _normalize_token_id_sequence(token_ids) + ) + except Exception as exc: + logger.debug("Multimodal tool suffix build failed, using text fallback: %s", exc) + fallback_prompt = self.build_prompt_text(messages=suffix_messages, tools=None) + return _normalize_token_id_sequence(tokenizer.encode(fallback_prompt, add_special_tokens=False)) + + def build_tool_response_suffix_text( + self, + *, + tool_message: Dict[str, Any], + ) -> str: + suffix_messages = [tool_message] + return self.build_prompt_text(messages=suffix_messages, tools=None) + + def encode_assistant_turn_suffix(self) -> List[int]: + tokenizer = self._get_tokenizer() + suffix_text = "<|im_end|>" if _is_kimi_tokenizer_name(self.tokenizer_name_or_path) else "<|im_end|>\n" + return _normalize_token_id_sequence( + tokenizer.encode(suffix_text, add_special_tokens=False) + ) + + def assistant_turn_suffix_text(self) -> str: + return "<|im_end|>" if _is_kimi_tokenizer_name(self.tokenizer_name_or_path) else "<|im_end|>\n" + + def decode_token_ids(self, *, token_ids: List[int]) -> str: + if not token_ids: + return "" + tokenizer = self._get_tokenizer() + try: + return str( + tokenizer.decode( + token_ids, + skip_special_tokens=False, + clean_up_tokenization_spaces=False, + ) + ) + except TypeError: + return str(tokenizer.decode(token_ids)) + + async def create_completion_from_prompt_ids( + self, + *, + prompt_token_ids: List[int], + prompt_text: Optional[str] = None, + images: List[str], + tools: Optional[List[Dict[str, Any]]] = None, + ) -> Dict[str, Any]: + active_tools = tools if tools is not None else (self.default_tools or None) + normalized_prompt_token_ids = [int(x) for x in list(prompt_token_ids)] + if prompt_text is None: + prompt_text = self.decode_token_ids(token_ids=normalized_prompt_token_ids) + request_payload = { + **self.request_params, + "model": self.model_id, + "prompt": prompt_text, + "images": images, + "temperature": self.temperature, + "max_tokens": self.max_tokens, + "return_token_ids": True, + "raw_output": True, + } + if self.logprobs: + request_payload["logprobs"] = True + + max_retries = 40 + base_delay = 10.0 + for attempt in range(max_retries + 1): + try: + response = await self._client.completions.create(**request_payload) + break + except Exception as exc: + status = getattr(exc, "status_code", None) or getattr(exc, "status", None) + err_str = str(exc) + is_transient = ( + status in (425, 429, 502, 503, 504) + or "model_not_ready" in err_str + or "hot loading" in err_str + or "Model not found" in err_str + or "DEPLOYMENT_SCALING_UP" in err_str + ) + if not is_transient or attempt >= max_retries: + raise + delay = min(base_delay * (2 ** attempt), 60.0) + logger.info( + "Retryable multimodal error (attempt %d/%d, status=%s), retrying in %.1fs: %s", + attempt + 1, + max_retries, + status, + delay, + err_str[:200], + ) + await asyncio.sleep(delay) + + response_dict = response.model_dump() if hasattr(response, "model_dump") else dict(response) + choices = response_dict.get("choices") or [] + if not choices: + raise ValueError("Fireworks /v1/completions response did not include choices") + + choice = choices[0] + finish_reason = str(choice.get("finish_reason") or "unknown") + raw_output = choice.get("raw_output") if isinstance(choice.get("raw_output"), dict) else {} + raw_completion_token_ids = _normalize_token_id_sequence( + choice.get("token_ids") or raw_output.get("completion_token_ids") or [] + ) + choice_prompt_token_ids = _normalize_token_id_sequence( + choice.get("prompt_token_ids") or raw_output.get("prompt_token_ids") or normalized_prompt_token_ids + ) + completion_token_ids = self._strip_generation_think_from_token_ids(raw_completion_token_ids) + completion_token_ids, _ = _strip_trailing_token_suffix( + completion_token_ids, + self.encode_assistant_turn_suffix(), + ) + completion_text = self.decode_token_ids(token_ids=completion_token_ids) + if not completion_text: + completion_text = self._strip_generation_assistant_suffix_from_text( + self._strip_generation_think_from_text(str(choice.get("text") or "")) + ) + + completion_logprobs: List[float] = [] + choice_logprobs = choice.get("logprobs") + if isinstance(choice_logprobs, dict): + token_logprobs = choice_logprobs.get("token_logprobs") or [] + completion_logprobs = [float(lp) if lp is not None else 0.0 for lp in token_logprobs] + completion_logprobs = completion_logprobs[: len(completion_token_ids)] + + if self.tool_call_parser is not None: + parsed_output = self.tool_call_parser(completion_text, completion_token_ids, active_tools) + parsed_tool_call: Optional[ParsedToolCall] = parsed_output.get("parsed_tool_call") + assistant_content = str(parsed_output.get("assistant_content", "") or "") + parser_name = str(parsed_output.get("parser", "external")) + message_payload: Dict[str, Any] = { + "role": "assistant", + "content": assistant_content, + } + if parsed_tool_call is not None: + message_payload["tool_calls"] = to_openai_tool_calls(parsed_tool_call) + else: + assistant_content = strip_chat_special_tokens(completion_text) + parser_name = "none" + message_payload = {"role": "assistant", "content": assistant_content} + + usage_obj = response_dict.get("usage") or {} + result: Dict[str, Any] = { + "choices": [ + { + "message": message_payload, + "finish_reason": finish_reason, + "raw_output": {**dict(raw_output or {}), "tool_call_parser": parser_name}, + } + ], + "usage": { + "prompt_tokens": int(usage_obj.get("prompt_tokens", len(choice_prompt_token_ids))), + "completion_tokens": int(usage_obj.get("completion_tokens", len(completion_token_ids))), + "total_tokens": int( + usage_obj.get("total_tokens", len(choice_prompt_token_ids) + len(completion_token_ids)) + ), + }, + "prompt_text": prompt_text, + "prompt_ids": list(choice_prompt_token_ids), + "completion_ids": list(completion_token_ids), + "completion_text": completion_text, + "finish_reason": finish_reason, + "raw_output": {**dict(raw_output or {}), "tool_call_parser": parser_name}, + } + if completion_logprobs: + result["completion_logprobs"] = completion_logprobs + return result + + async def create_completion( + self, + *, + messages: List[Dict[str, Any]], + images: List[str], + tools: Optional[List[Dict[str, Any]]] = None, + ) -> Dict[str, Any]: + active_tools = tools if tools is not None else (self.default_tools or None) + prompt_token_ids = self.build_prompt_token_ids(messages=messages, tools=active_tools) + return await self.create_completion_from_prompt_ids( + prompt_token_ids=prompt_token_ids, + images=images, + tools=active_tools, + ) def _to_message_payload(messages: Iterable[Message]) -> List[Dict[str, Any]]: @@ -90,7 +616,8 @@ def _merge_request_params( ignored_keys = { "model", "temperature", "max_tokens", "base_url", "api_key", "tokenizer_name_or_path", "tokenizer_path", - "system_prompt", "user_prompt_template", + "system_prompt", "user_prompt_template", "visual_prompt_template", + "observation_mode", "allow_plaintext_action_fallback", } for key, value in completion_params.items(): @@ -103,6 +630,17 @@ def _merge_request_params( return merged +def _looks_like_tool_parse_error_message(message: str) -> bool: + lowered = str(message or "").lower() + return ( + "tool_call" in lowered + or "tool calls" in lowered + or "valid json" in lowered + or "unsupported tool" in lowered + or "invalid action" in lowered + ) + + # --------------------------------------------------------------------------- # Frozen-lake-specific tool-call parser (passed to generic client) # --------------------------------------------------------------------------- @@ -224,6 +762,8 @@ def __init__( allow_plaintext_action_fallback: bool = False, logprobs: bool = True, enable_thinking: Optional[bool] = False, + observation_mode: str = "text", + max_parse_retries: int = 0, ): self.model_id = model_id self.tokenizer_name_or_path = tokenizer_name_or_path @@ -237,6 +777,8 @@ def __init__( self.allow_plaintext_action_fallback = allow_plaintext_action_fallback self.logprobs = logprobs self.enable_thinking = enable_thinking + self.observation_mode = observation_mode + self.max_parse_retries = max_parse_retries def __call__(self, rows: List[EvaluationRow], config: RolloutProcessorConfig) -> List[asyncio.Task[EvaluationRow]]: completion_params = dict(config.completion_params or {}) @@ -256,6 +798,8 @@ def __call__(self, rows: List[EvaluationRow], config: RolloutProcessorConfig) -> or self.tokenizer_name_or_path or model_id ) + if tokenizer_name_or_path == model_id and _is_kimi_tokenizer_name(model_id): + tokenizer_name_or_path = "moonshotai/Kimi-K2.5" api_key = completion_params.get("api_key") or processor_kwargs.get("api_key") or self.api_key base_url = completion_params.get("base_url") or processor_kwargs.get("base_url") or self.base_url temperature = float(completion_params.get("temperature", processor_kwargs.get("temperature", self.temperature))) @@ -274,21 +818,35 @@ def __call__(self, rows: List[EvaluationRow], config: RolloutProcessorConfig) -> ), ) ) + observation_mode = str( + completion_params.get("observation_mode") + or processor_kwargs.get("observation_mode") + or self.observation_mode + ).strip().lower() + max_parse_retries = int( + completion_params.get("max_parse_retries") + or processor_kwargs.get("max_parse_retries") + or self.max_parse_retries + ) + if observation_mode == "image": + request_params.setdefault("thinking", {"type": "disabled"}) + fallback_system_prompt = DEFAULT_SYSTEM_PROMPT_INSTRUCTIONS default_system_prompt = ( completion_params.get("system_prompt") or processor_kwargs.get("system_prompt") or self.system_prompt - or ( - "/no_think\n" - "You are an RL policy for FrozenLake.\n" - "Pick the action that moves toward G while avoiding H.\n" - "Always respond with exactly one tool call, no text." - ) + or fallback_system_prompt ) default_user_prompt_template = ( processor_kwargs.get("user_prompt_template") or self.user_prompt_template or completion_params.get("user_prompt_template") + or None + ) + default_visual_prompt = ( + processor_kwargs.get("visual_prompt_template") + or completion_params.get("visual_prompt_template") + or DEFAULT_VISUAL_PROMPT_TEMPLATE ) async def process_row(row: EvaluationRow) -> EvaluationRow: @@ -296,21 +854,39 @@ async def process_row(row: EvaluationRow) -> EvaluationRow: tool_call_parser = build_frozen_lake_tool_call_parser( allow_plaintext_action_fallback=allow_plaintext_action_fallback, + tokenizer_getter=lambda: _get_hf_tokenizer(str(tokenizer_name_or_path)), model_id=model_id, ) - client = FireworksV1CompletionsClient( - model_id=model_id, - tokenizer_name_or_path=str(tokenizer_name_or_path), - api_key=str(api_key) if api_key is not None else None, - base_url=str(base_url) if base_url is not None else None, - temperature=temperature, - max_tokens=max_tokens, - request_params=request_params, - logprobs=self.logprobs, - enable_thinking=self.enable_thinking, - tool_call_parser=tool_call_parser, - default_tools=FROZEN_LAKE_TOOLS, - ) + text_client = None + image_client = None + if observation_mode == "image": + image_client = FireworksV1ImageCompletionsClient( + model_id=model_id, + tokenizer_name_or_path=str(tokenizer_name_or_path), + api_key=str(api_key) if api_key is not None else None, + base_url=str(base_url) if base_url is not None else None, + temperature=temperature, + max_tokens=max_tokens, + request_params=request_params, + logprobs=self.logprobs, + enable_thinking=self.enable_thinking, + tool_call_parser=tool_call_parser, + default_tools=FROZEN_LAKE_TOOLS, + ) + else: + text_client = FireworksV1CompletionsClient( + model_id=model_id, + tokenizer_name_or_path=str(tokenizer_name_or_path), + api_key=str(api_key) if api_key is not None else None, + base_url=str(base_url) if base_url is not None else None, + temperature=temperature, + max_tokens=max_tokens, + request_params=request_params, + logprobs=self.logprobs, + enable_thinking=self.enable_thinking, + tool_call_parser=tool_call_parser, + default_tools=FROZEN_LAKE_TOOLS, + ) usage = {"prompt_tokens": 0, "completion_tokens": 0, "total_tokens": 0} all_prompt_ids: List[int] = [] all_completion_ids: List[int] = [] @@ -321,6 +897,15 @@ async def process_row(row: EvaluationRow) -> EvaluationRow: latest_finish_reason: Optional[str] = None latest_raw_output: Optional[Dict[str, Any]] = None rollout_error: Optional[str] = None + assistant_toolcall_prefill_ids: List[int] = [] + assistant_toolcall_prefill_text = "" + if _is_kimi_tokenizer_name(str(tokenizer_name_or_path)): + assistant_toolcall_prefill_ids = _build_kimi_toolcall_generation_prefill_token_ids( + str(tokenizer_name_or_path) + ) + assistant_toolcall_prefill_text = _build_kimi_toolcall_generation_prefill_text( + str(tokenizer_name_or_path) + ) try: dataset_info = row.input_metadata.dataset_info or {} @@ -332,6 +917,9 @@ async def process_row(row: EvaluationRow) -> EvaluationRow: row_user_prompt_template = dataset_info.get("user_prompt_template") if not isinstance(row_user_prompt_template, str) or not row_user_prompt_template: row_user_prompt_template = default_user_prompt_template + row_visual_prompt_template = dataset_info.get("visual_prompt_template") + if not isinstance(row_visual_prompt_template, str) or not row_visual_prompt_template: + row_visual_prompt_template = default_visual_prompt env = build_frozen_lake_tool_env(environment_context=env_context, max_steps=max_steps) state = env.reset() @@ -342,15 +930,45 @@ async def process_row(row: EvaluationRow) -> EvaluationRow: if default_system_prompt and not any(m.role == "system" for m in messages): messages.insert(0, Message(role="system", content=default_system_prompt)) row.tools = row.tools or list(FROZEN_LAKE_TOOLS) - initial_user_prompt = build_frozen_lake_user_prompt( - user_prompt_template=str(row_user_prompt_template) if row_user_prompt_template else None, - observation=observation, - ) - messages.append(Message(role="user", content=initial_user_prompt)) - current_prompt_ids = client.build_prompt_token_ids( - messages=_to_message_payload(messages=messages), - tools=row.tools, - ) + current_prompt_ids: List[int] = [] + current_images: List[str] = [] + current_prompt_text = "" + if observation_mode != "image": + initial_user_prompt = build_frozen_lake_user_prompt( + user_prompt_template=str(row_user_prompt_template) if row_user_prompt_template else None, + observation=observation, + ) + messages.append(Message(role="user", content=initial_user_prompt)) + current_prompt_ids = text_client.build_prompt_token_ids( + messages=_to_message_payload(messages=messages), + tools=row.tools, + ) + else: + initial_visual_prompt = _build_visual_user_prompt( + prompt_template=str(row_visual_prompt_template) if row_visual_prompt_template else None, + observation=observation, + default_prompt=str(default_visual_prompt), + ) + initial_image_url = env.render_image_data_url() + current_images = [initial_image_url] + messages.append( + Message( + role="user", + content=_build_multimodal_image_content( + image_url=initial_image_url, + text=initial_visual_prompt, + ), + ) + ) + message_payloads = _to_message_payload(messages=messages) + current_prompt_ids = image_client.build_prompt_token_ids( + messages=message_payloads, + tools=row.tools, + ) + current_prompt_text = image_client.build_prompt_text( + messages=message_payloads, + tools=row.tools, + ) for step_index in range(max_steps): if done: @@ -363,22 +981,59 @@ async def process_row(row: EvaluationRow) -> EvaluationRow: except Exception: pass + base_prompt_ids = list(current_prompt_ids) + base_prompt_text = str(current_prompt_text) + model_request_traces.append( { "step_index": step_index + 1, - "prompt_ids": list(current_prompt_ids), - "prompt_token_count": len(current_prompt_ids), + "prompt_ids": list(base_prompt_ids), + "prompt_token_count": len(base_prompt_ids), "tools": list(row.tools or []), + "observation_mode": observation_mode, } ) - try: - completion = await client.create_completion_from_prompt_ids( - prompt_token_ids=current_prompt_ids, - tools=row.tools, - ) - except Exception as exc: - rollout_error = str(exc) - tool_call_traces.append({"step_index": step_index + 1, "error": rollout_error}) + request_prompt_ids = list(base_prompt_ids) + request_prompt_text = base_prompt_text + if assistant_toolcall_prefill_ids: + request_prompt_ids.extend(assistant_toolcall_prefill_ids) + if observation_mode == "image": + request_prompt_text = f"{request_prompt_text}{assistant_toolcall_prefill_text}" + model_request_traces[-1]["assistant_prefill_len"] = len(assistant_toolcall_prefill_ids) + model_request_traces[-1]["assistant_prefill_text"] = assistant_toolcall_prefill_text + model_request_traces[-1]["logical_prompt_ids"] = list(base_prompt_ids) + model_request_traces[-1]["logical_prompt_token_count"] = len(base_prompt_ids) + model_request_traces[-1]["prompt_ids"] = list(request_prompt_ids) + model_request_traces[-1]["prompt_token_count"] = len(request_prompt_ids) + parse_retry_count = 0 + while True: + try: + if observation_mode == "image": + completion = await image_client.create_completion_from_prompt_ids( + prompt_token_ids=request_prompt_ids, + prompt_text=request_prompt_text, + images=current_images, + tools=row.tools, + ) + model_request_traces[-1]["image_count"] = len(current_images) + model_request_traces[-1]["prompt_text"] = request_prompt_text + else: + completion = await text_client.create_completion_from_prompt_ids( + prompt_token_ids=request_prompt_ids, + tools=row.tools, + ) + break + except Exception as exc: + if parse_retry_count >= max_parse_retries or not _looks_like_tool_parse_error_message(str(exc)): + rollout_error = str(exc) + tool_call_traces.append({"step_index": step_index + 1, "error": rollout_error}) + completion = None + break + parse_retry_count += 1 + model_request_traces[-1]["parse_retry_count"] = parse_retry_count + model_request_traces[-1].setdefault("parse_retry_errors", []).append(str(exc)) + await asyncio.sleep(0.25 * parse_retry_count) + if completion is None: break usage_payload = completion.get("usage") or {} @@ -386,10 +1041,23 @@ async def process_row(row: EvaluationRow) -> EvaluationRow: usage["completion_tokens"] += int(usage_payload.get("completion_tokens", 0)) usage["total_tokens"] += int(usage_payload.get("total_tokens", 0)) - prompt_ids = [int(x) for x in list(completion.get("prompt_ids") or current_prompt_ids)] - completion_ids = [int(x) for x in list(completion.get("completion_ids") or [])] + provider_prompt_ids = [int(x) for x in list(completion.get("prompt_ids") or [])] + prompt_ids = [int(x) for x in list(base_prompt_ids)] + raw_completion_ids = [int(x) for x in list(completion.get("completion_ids") or [])] + if observation_mode == "image": + assistant_suffix_ids = image_client.encode_assistant_turn_suffix() + else: + assistant_suffix_ids = text_client.encode_special_suffix() + completion_ids = ( + [int(x) for x in list(assistant_toolcall_prefill_ids)] + + list(raw_completion_ids) + + [int(x) for x in list(assistant_suffix_ids)] + ) + completion_text = str(completion.get("completion_text") or "") all_prompt_ids.extend(prompt_ids) all_completion_ids.extend(completion_ids) + if provider_prompt_ids and provider_prompt_ids != request_prompt_ids: + model_request_traces[-1]["provider_prompt_ids"] = provider_prompt_ids choice = (completion.get("choices") or [{}])[0] message_payload = choice.get("message") or {} @@ -400,7 +1068,7 @@ async def process_row(row: EvaluationRow) -> EvaluationRow: assistant_message_payload = { "role": "assistant", - "content": message_payload.get("content", ""), + "content": completion_text or str(message_payload.get("content", "") or ""), "tool_calls": message_payload.get("tool_calls"), } assistant_message = Message.model_validate(assistant_message_payload) @@ -426,13 +1094,15 @@ async def process_row(row: EvaluationRow) -> EvaluationRow: raw_output.get("tool_call_parser") if isinstance(raw_output, dict) else None ), } + if observation_mode == "image": + turn_trace["prompt_text"] = base_prompt_text + turn_trace["observation_mode"] = "image" completion_logprobs = completion.get("completion_logprobs") if completion_logprobs: turn_trace["completion_logprobs"] = [float(lp) for lp in completion_logprobs] token_turn_traces.append(turn_trace) tool_result = { - "observation": observation, "action": action, "reward": reward, "terminated": bool(state.get("terminated", False)), @@ -443,22 +1113,59 @@ async def process_row(row: EvaluationRow) -> EvaluationRow: "tile": state.get("tile"), "step_index": state.get("step_index", step_index + 1), } + tool_image_url = env.render_image_data_url() if observation_mode == "image" else None tool_message_payload = { "role": "tool", "name": TOOL_NAME_LAKE_MOVE, "tool_call_id": tool_call_id or None, - "content": json.dumps(tool_result, separators=(",", ":")), + "content": ( + _build_multimodal_image_content(image_url=tool_image_url) + if observation_mode == "image" and tool_image_url + else json.dumps(tool_result, separators=(",", ":")) + ), } messages.append(Message.model_validate(tool_message_payload)) - im_end_ids = client.encode_special_suffix() - assistant_turn_ids = list(completion_ids) + im_end_ids - tool_suffix_ids = client.build_tool_response_suffix_token_ids( - tool_message=tool_message_payload - ) - current_prompt_ids = list(prompt_ids) + list(assistant_turn_ids) + list(tool_suffix_ids) - model_request_traces[-1]["assistant_turn_len"] = len(completion_ids) - model_request_traces[-1]["tool_suffix_len"] = len(tool_suffix_ids) + if observation_mode == "image": + model_request_traces[-1]["assistant_turn_len"] = len(completion_ids) + if not done: + assistant_turn_ids = list(completion_ids) + assistant_turn_text = ( + str(assistant_toolcall_prefill_text or "") + + str(completion_text or "") + + image_client.assistant_turn_suffix_text() + ) + tool_suffix_ids = image_client.build_tool_response_suffix_token_ids( + tool_message=tool_message_payload, + ) + tool_suffix_text = image_client.build_tool_response_suffix_text( + tool_message=tool_message_payload, + ) + tool_suffix_text = image_client.decode_token_ids( + token_ids=tool_suffix_ids + ) + current_prompt_ids = ( + list(prompt_ids) + list(assistant_turn_ids) + list(tool_suffix_ids) + ) + current_prompt_text = ( + str(base_prompt_text) + + assistant_turn_text + + tool_suffix_text + ) + if tool_image_url is not None: + current_images = list(current_images) + [tool_image_url] + model_request_traces[-1]["tool_suffix_len"] = len(tool_suffix_ids) + else: + current_prompt_ids = [] + current_prompt_text = "" + else: + assistant_turn_ids = list(completion_ids) + tool_suffix_ids = text_client.build_tool_response_suffix_token_ids( + tool_message=tool_message_payload + ) + current_prompt_ids = list(prompt_ids) + list(assistant_turn_ids) + list(tool_suffix_ids) + model_request_traces[-1]["assistant_turn_len"] = len(completion_ids) + model_request_traces[-1]["tool_suffix_len"] = len(tool_suffix_ids) tool_call_traces.append( { "step_index": step_index + 1, @@ -493,6 +1200,10 @@ async def process_row(row: EvaluationRow) -> EvaluationRow: extra["tools_input"] = list(row.tools or []) extra["model_request_traces"] = list(model_request_traces) extra["token_turn_traces"] = list(token_turn_traces) + extra["observation_mode"] = observation_mode + extra["tool_call_generation_mode"] = ( + "plaintext_fallback" if allow_plaintext_action_fallback else "prompt_only" + ) if rollout_error: extra["rollout_error"] = rollout_error row.execution_metadata.extra = extra @@ -504,7 +1215,10 @@ async def process_row(row: EvaluationRow) -> EvaluationRow: pass return row finally: - await client.close() + if text_client is not None: + await text_client.close() + if image_client is not None: + await image_client.close() async def _sem_wrapper(target_row: EvaluationRow) -> EvaluationRow: async with semaphore: diff --git a/training/examples/frozen_lake/frozen_lake_schema.py b/training/examples/frozen_lake/frozen_lake_schema.py index 60c28645..15d49491 100644 --- a/training/examples/frozen_lake/frozen_lake_schema.py +++ b/training/examples/frozen_lake/frozen_lake_schema.py @@ -111,9 +111,53 @@ def _load_xml_tool_call_payload_with_text_span(text: str) -> Tuple[Dict[str, Any return payload, start, end +def _load_kimi_native_tool_call_payload_with_text_span(text: str) -> Tuple[Dict[str, Any], int, int]: + match = re.search( + r"(?:<\|tool_calls_section_begin\|>)?\s*" + r"<\|tool_call_begin\|>\s*(.*?)\s*" + r"<\|tool_call_argument_begin\|>\s*(\{.*?\})\s*" + r"<\|tool_call_end\|>\s*" + r"(?:<\|tool_calls_section_end\|>)?", + text, + flags=re.DOTALL, + ) + if not match: + raise ValueError("No Kimi native tool_call block found") + + raw_identifier = str(match.group(1) or "").strip() + arguments_text = match.group(2) + try: + arguments = json.loads(arguments_text) + except json.JSONDecodeError as exc: + raise ValueError(f"Invalid JSON inside Kimi tool call: {arguments_text!r}") from exc + if not isinstance(arguments, dict): + raise ValueError("Kimi tool call arguments must be a JSON object") + + tool_name = TOOL_NAME_LAKE_MOVE + identifier = raw_identifier + if raw_identifier.startswith("functions."): + qualified_name = raw_identifier.split(":", 1)[0] + tool_name = qualified_name.split(".", 1)[1] or TOOL_NAME_LAKE_MOVE + payload = { + "tool_calls": [ + { + "id": identifier or f"toolcall_{uuid.uuid4().hex[:12]}", + "name": tool_name, + "arguments": arguments, + } + ] + } + start, end = match.span() + return payload, start, end + + def parse_first_frozen_lake_tool_call(output_text: str) -> ParsedToolCall: """Parse the first tool call from strict tool-call JSON output.""" - loaders = (_load_json_object_with_text_span, _load_xml_tool_call_payload_with_text_span) + loaders = ( + _load_json_object_with_text_span, + _load_xml_tool_call_payload_with_text_span, + _load_kimi_native_tool_call_payload_with_text_span, + ) last_error: Exception | None = None for loader in loaders: try: @@ -129,7 +173,11 @@ def parse_first_frozen_lake_tool_call(output_text: str) -> ParsedToolCall: def parse_first_frozen_lake_tool_call_with_content(output_text: str) -> Tuple[ParsedToolCall, str]: """Parse the first tool call and return residual assistant text content.""" - loaders = (_load_json_object_with_text_span, _load_xml_tool_call_payload_with_text_span) + loaders = ( + _load_json_object_with_text_span, + _load_xml_tool_call_payload_with_text_span, + _load_kimi_native_tool_call_payload_with_text_span, + ) last_error: Exception | None = None for loader in loaders: try: diff --git a/training/examples/frozen_lake/rendering.py b/training/examples/frozen_lake/rendering.py new file mode 100644 index 00000000..1b81522e --- /dev/null +++ b/training/examples/frozen_lake/rendering.py @@ -0,0 +1,119 @@ +"""Rendering helpers for FrozenLake visual rollouts. + +This mirrors the upstream Gymnasium FrozenLake renderer, but uses PIL so we can +produce deterministic PNG data URLs without depending on pygame at rollout time. +""" + +from __future__ import annotations + +import base64 +import io +from functools import lru_cache +from pathlib import Path +from typing import Sequence + +from PIL import Image, ImageDraw + + +ASSET_DIR = Path(__file__).resolve().parent / "assets" / "img" +DEFAULT_ACTION = "DOWN" +ASSET_BY_TILE = { + "H": "hole.png", + "G": "goal.png", + "S": "stool.png", +} +ELF_ASSET_BY_ACTION = { + "LEFT": "elf_left.png", + "DOWN": "elf_down.png", + "RIGHT": "elf_right.png", + "UP": "elf_up.png", +} +try: + RESAMPLE_LANCZOS = Image.Resampling.LANCZOS +except AttributeError: + RESAMPLE_LANCZOS = Image.LANCZOS + + +@lru_cache(maxsize=64) +def _load_scaled_asset(asset_name: str, cell_size: int) -> Image.Image: + asset_path = ASSET_DIR / asset_name + image = Image.open(asset_path).convert("RGBA") + return image.resize((cell_size, cell_size), RESAMPLE_LANCZOS) + + +def render_frozen_lake_png_bytes( + map_rows: Sequence[str], + *, + agent_row: int, + agent_col: int, + last_action: str | None = None, + cell_size: int = 96, +) -> bytes: + rows = len(map_rows) + cols = len(map_rows[0]) if map_rows else 0 + canvas = Image.new("RGBA", (cols * cell_size, rows * cell_size), (255, 255, 255, 255)) + draw = ImageDraw.Draw(canvas) + + ice_tile = _load_scaled_asset("ice.png", cell_size) + hole_tile = _load_scaled_asset("hole.png", cell_size) + cracked_hole_tile = _load_scaled_asset("cracked_hole.png", cell_size) + goal_tile = _load_scaled_asset("goal.png", cell_size) + start_tile = _load_scaled_asset("stool.png", cell_size) + elf_tile = _load_scaled_asset( + ELF_ASSET_BY_ACTION.get(str(last_action or DEFAULT_ACTION).upper(), "elf_down.png"), + cell_size, + ) + + overlay_by_tile = { + "H": hole_tile, + "G": goal_tile, + "S": start_tile, + } + + for row_index, row in enumerate(map_rows): + for col_index, cell in enumerate(row): + position = (col_index * cell_size, row_index * cell_size) + canvas.alpha_composite(ice_tile, position) + overlay = overlay_by_tile.get(cell) + if overlay is not None: + canvas.alpha_composite(overlay, position) + draw.rectangle( + ( + position[0], + position[1], + position[0] + cell_size, + position[1] + cell_size, + ), + outline=(180, 200, 230, 255), + width=1, + ) + + agent_position = (agent_col * cell_size, agent_row * cell_size) + agent_tile = map_rows[agent_row][agent_col] + if agent_tile == "H": + canvas.alpha_composite(cracked_hole_tile, agent_position) + else: + canvas.alpha_composite(elf_tile, agent_position) + + out = io.BytesIO() + canvas.convert("RGB").save(out, format="PNG") + return out.getvalue() + + +def render_frozen_lake_png_data_url( + map_rows: Sequence[str], + *, + agent_row: int, + agent_col: int, + last_action: str | None = None, + cell_size: int = 96, +) -> str: + png_bytes = render_frozen_lake_png_bytes( + map_rows, + agent_row=agent_row, + agent_col=agent_col, + last_action=last_action, + cell_size=cell_size, + ) + encoded = base64.b64encode(png_bytes).decode("ascii") + return f"data:image/png;base64,{encoded}" diff --git a/training/examples/frozen_lake/test_masking.py b/training/examples/frozen_lake/test_masking.py index ca06f393..7e068fad 100644 --- a/training/examples/frozen_lake/test_masking.py +++ b/training/examples/frozen_lake/test_masking.py @@ -78,6 +78,18 @@ def _make_traces(turns: list[dict]) -> tuple[list[dict], list[dict]]: }, ] +KIMI_STYLE_MULTI_TURN = [ + { + "prompt_ids": [1, 2, 3], + "completion_ids": [99, 10, 90], # prefill, raw tool call token(s), im_end + "assistant_turn_len": 3, + }, + { + "prompt_ids": [1, 2, 3, 99, 10, 90, 20, 21], + "completion_ids": [99, 30, 90], + }, +] + @pytest.mark.parametrize("scenario", [SINGLE_TURN, MULTI_TURN_2, MULTI_TURN_3], ids=["single", "multi_2", "multi_3"]) @@ -183,3 +195,17 @@ def test_fallback_when_assistant_turn_len_missing(): assert spans_no_mrt[0] == (3, 2, 1), "should fall back to completion_ids len" assert spans_with_mrt[0] == spans_no_mrt[0] + + +def test_kimi_style_mask_includes_prefill_and_im_end_tokens(): + """Assistant framing tokens should be masked as model output too.""" + ttt, mrt = _make_traces(KIMI_STYLE_MULTI_TURN) + spans = compute_model_output_spans(ttt, mrt) + + assert spans == [(3, 3, 1), (8, 3, 2)] + + ui_mask = build_ui_token_mask(spans, 11) + assert ui_mask == [0, 0, 0, 1, 1, 1, 0, 0, 2, 2, 2] + + train_mask = build_training_loss_mask(spans, 10) + assert train_mask == [0.0, 0.0, 1.0, 1.0, 1.0, 0.0, 0.0, 1.0, 1.0, 1.0] diff --git a/training/examples/frozen_lake/train_frozen_lake.py b/training/examples/frozen_lake/train_frozen_lake.py index 4b793530..1884932d 100644 --- a/training/examples/frozen_lake/train_frozen_lake.py +++ b/training/examples/frozen_lake/train_frozen_lake.py @@ -36,7 +36,10 @@ from eval_protocol.pytest.types import RolloutProcessorConfig from training.examples.frozen_lake.frozen_lake_env import build_frozen_lake_tool_env -from training.examples.frozen_lake.frozen_lake_rollout import FrozenLakeToolRolloutProcessor +from training.examples.frozen_lake.frozen_lake_rollout import ( + DEFAULT_SYSTEM_PROMPT_INSTRUCTIONS, + FrozenLakeToolRolloutProcessor, +) from training.examples.frozen_lake.masking import ( compute_model_output_spans, build_training_loss_mask, @@ -82,14 +85,16 @@ # --------------------------------------------------------------------------- DEFAULT_USER_PROMPT_TEMPLATE = "FrozenLake grid observation:\n{observation}" - -DEFAULT_SYSTEM_PROMPT = ( - "/no_think\n" - "You are an RL policy for FrozenLake.\n" - "Pick the action that moves toward G while avoiding H.\n" - "Always respond with exactly one tool call, no text." +DEFAULT_VISUAL_PROMPT_TEMPLATE = ( + "You are playing FrozenLake. The image shows the current grid. " + "The current textual observation is below.\n" + "{observation}\n\n" + "Tiles are labeled S, F, H, and G. The agent is marked with a red dot. " + "Use exactly one lake_move tool call with action LEFT, DOWN, RIGHT, or UP." ) +DEFAULT_SYSTEM_PROMPT = DEFAULT_SYSTEM_PROMPT_INSTRUCTIONS + @dataclass class FrozenLakeConfig: @@ -121,6 +126,9 @@ class FrozenLakeConfig: use_random_map: bool = True system_prompt: str = DEFAULT_SYSTEM_PROMPT user_prompt_template: str = DEFAULT_USER_PROMPT_TEMPLATE + visual_prompt_template: str = DEFAULT_VISUAL_PROMPT_TEMPLATE + observation_mode: str = "text" + allow_plaintext_action_fallback: bool = False training_shape: str = "" deployment_shape: str = "" @@ -166,6 +174,9 @@ def parse_args() -> FrozenLakeConfig: parser.add_argument("--wandb-entity", default=os.environ.get("WANDB_ENTITY", "")) parser.add_argument("--wandb-project", default=os.environ.get("WANDB_PROJECT", "frozen-lake-grpo")) + parser.add_argument("--visual-prompt-template", default=DEFAULT_VISUAL_PROMPT_TEMPLATE) + parser.add_argument("--observation-mode", choices=("text", "image"), default="text") + parser.add_argument("--allow-plaintext-action-fallback", action="store_true") return cast(FrozenLakeConfig, parser.parse_args(namespace=FrozenLakeConfig())) @@ -559,6 +570,8 @@ def _cleanup_deployment(deployment_id: str | None) -> None: system_prompt=cfg.system_prompt, user_prompt_template=cfg.user_prompt_template, logprobs=True, + observation_mode=cfg.observation_mode, + allow_plaintext_action_fallback=cfg.allow_plaintext_action_fallback, ) rollout_config = RolloutProcessorConfig( completion_params={"model": inference_model}, @@ -590,6 +603,7 @@ async def sample_one_prompt(env_context: Dict[str, Any]) -> PromptGroup | None: dataset_info={ "environment_context": dict(env_context), "user_prompt_template": cfg.user_prompt_template, + "visual_prompt_template": cfg.visual_prompt_template, }, ), )) diff --git a/training/examples/frozen_lake/validation_screenshots/kimi-ep-logs.png b/training/examples/frozen_lake/validation_screenshots/kimi-ep-logs.png new file mode 100644 index 0000000000000000000000000000000000000000..6bd6987f8d558f803f4960441f606cd9f45fcda4 GIT binary patch literal 284029 zcmeEuWmFtnxFr!nfRGRf!Gc?$ad!>w?iSqLHCRGOAT-jr1oz-Bf#3}U8i%HFg1g%k z$-Vc@n>F*^n>TN*nIBVYg_Y{As#AUHobTJ;-uqOzl7b`#8UY#-5)y{A)EgBfB$UT@ z{~kXAK6xDz7lwp{i6s3-M9nj03y$phLKC-ZKe+L3!?h`2?9@klktgNkkyqFFf&;m7ka&0aJW7eD#5 zzny-b^*%C~YlRG9(S=B@J`~Auzrh55=Y954?e9|ph0qUfuGe-(Q0DW^udgL??E^qJ z%~;ZS3?Hg!aa5csQRzg2fZn;==5tK)7(Zn7C2%GpwdG|5VYboeR^6sP{PFzJ#7-;3 zL=z$1Hz`8ttc4}|=LAnCtFLv7mW&2YSV(7TuJb7KF#`V2nUQ;RCVX#Be7yEP-M9F2 zBofjUAx;R={hV6H-A*dZm0$-%OPt547~Is|d#3TURR80} zSZ@rC8N9*mU}LN(D%T2cB3GUe6`T6g86*@Pw-1`gwgMb*aB*yd?SK4hxPw26fpoOZ zc_dr<;OgAv@|qnpf>@v-TRKMKV7ZrKp*hfrT>cLW!P*UKY&G4y4ouhI1ONOM`dKXDf+esq> zl0VNSHTv?U)b6(G@^F#Gs`tjPa8tNq7M0U7H`b({pQ~)wmLcW#;b<)P!u899W;ZXI zYK@~@AOn!HOxpl>MPfnqz`KZD8(AoM(XT2 z0?;21r8K@4xcCgNmd(??1ap5QXoH9eKW;;WJf;Q6a+qs@ot3*}4aoX>cqfg`DQDTNs5+Ci>6^ z_v=N=vA{1MCuiphO%-drg2N5h)S+$X;hEIb)B!*CHki?vNo^jlJS12!ujLVjE{CNX zq4frTL&_{8C{+>?m&Tr=-W^2(3Aj0b|5p?<)N!_ssG8xH>C2%fO+6gLSzCLSb5qy? z_OsTnpD_-87+nT4`J!2>b#Gy>`7lQ!4DA2(aqA;o8$;Pi=1emw#Nfdo+UrvyZn{I< zGH|{!MSql;jHeF*coNBn3)hVgCz)B1_NeYAp-0(V6GRMx=v~F$g&sp3if4+2nMFp8 zsJUm|FH&(HH}rU{2T5~+l=yvDn%%BTe9NG;-VzkI+4jdXI4}M{4S!A% zHkz;8K@3e5^qW?zv4TLvBVKac8%G4(+I8WLA}MveDLLzhFr}OJ$8X0pAYbn^?q*vI zrBP>(uB9*=2kEu?!ykqcFj^yLj|ekZjbwv4?R2K9Z6NEpYUym6rFzsxGtEA=^-+)9 zF9cl;{073Ys957Z-QHZ5B`T7r1~&rDC7ymgVv&ubGvn0JEHkiM9Xrj>GyzjeLrvnC z3=P`fKXX`}=>FNwA8^xzFQxaS+=XEKqgu0;V8=nM+hXrwiJk>!9_qIqz<`xAX2IX{{-%)MLi zKj--EB#o3wv3Zm+i9t@XO}RO3%9e>%)8Q;(uu`R}ZOyGtuIZf(1yOy% zG2$#R)JIz#AVb3Z0%X}UKFBHgpyFIVEzN|#7($1~`0QsXVJuV0-d+>V(;L6lRLapE zsU?)SFJwP#?fqpiGBu`%_&tB>Gv|nCY>XDje;dz{#g$IuuU{Tao%!^@^Y+FM`ztWx zrTotpPOk@Y|NF2H1fCmpVLHwEWljT09J$j>=Fo&yH>*%1Aob+9ZH^ywlLYisnDxs& zF2MP6!GD2QQ`l`iR+yM^P}X|G8s)Xphf}Fnh2^v}Tc3NN*eEylu~jmPIFaRLb%a`T zF^t`DbRVO7L%CabR7n{EpDZ^SxW=MUux(ez5Onhu$9Qw>$2>^-JM@+=80`|??hcN) zPc?qoTZTuB@at0faOZ!d9%NMXhnq7B`JTT)gIbfbv`a*XBRt}fX}F}~a`cy#mZrc| z?sV8!pD!)KQ8CK+8)##mm3�c9A)DrD{s$^gOjyMdi-0bV0?T&#tO%Z%H?-x}~CjOl9l!1+h9#$emB8wR&1@gS=m#ADVJaNJb_z zb}QU~h;+H)1BML2g2CN=yXBWs@p4u9bPl>>* zpRHxCJjIEaR&(FN=yj_NE}js8&~u|ITI2P7p2}2)3H2U~C1=-i z?1rtdmH6qY(cOQ{eV20ed*($bUA`J&@rKyE&Np6Ie`aj_5cC=fAy4=bg{8(y`It`8 z@FTz1zJXv#u(Bq>qSb55tg#SuT*lb9ogWi_Ds~hDBPq#I4m4jSqaemw@(otVkI}F( zQRa}FCzm*)wk@B^JEnHDjcC1%DSTZ0u`J;BCRfLyJCbPi*sAkum~D-hi$_#ozr`F?2=DpnWJRHD5>xIW{?;cQ-j?u*$Z4N~MFN;zzba?@lLO?Q1h>okz- z-j|A&E=yE=`Vfu)G+Ne6i}Mlo7o+n#+sU=gXOpxp%~J1X#|2ZkD$Fj4t;VV%P36+3 zQ#7vYwNFU+sjCa)Ag0n-i96CRYdwoQ``#XQ48va~PEKxmW2nK6gQo*mybh-d3?52blJHx4>$tAupHiz{N%y>|WG_`T^|`NVafc2AC{H5;rPcLE8bD^uG5Q`<;j|<% z)#O!KWjWmb>AS}&6kk<6f6R@y%)O%kZaLTFrMffMY}3w1w5iy^iZRH(d}t$_ukPcm za-mbjT5bi)rEY=+Dm5;RTDSXMo+M6WED^-hYmY#S;`~9HrR*k;tlf-(I7X$A!VRWV zr&DDp_?{USbm7mQ4{K8ulkzJezyt!^aLc=bS}TuS?`Dk>9drK@_EAQe>W|6~1oZ_k zE~>DUis+Nst=_h)`}t$2RTBip_#Q|dr3Pi$w-i* zfxxNLbk2K))fWzGiBV~Xi@}5{Wa?y>ZW!pz{(iVnuQ~kBv+&ZmXm1%DhGB@oL)s1SxIl=fx{u|@ljRtdur@C&NXO*AQ z`8BOMtt|>M2uBOw?)s~VM-gX(!I{U$I=K- zpvlJQs0R(>RNs?^#-YwPpWc_rgE&CpI>QDzGt8TFx--Y#)2b(L%wsw<|B)sxlL7nE zGi$C?f)8fB;LeZ$9ojnAbrn^!ynA0Cc_=6-kQg*xGK%^YIWDxXW{V^;7{NaBMIE_q z*bE1byewQlv^h>Qn2?dw} ziHIr{i|)OLSlYDF&MX&oT&@yTj^*)(M4LHHO_j2fjum!-_6Ru?W-N1deiTp z{0M9qtZ|RCRCfUTr^~_LT)-B}u+u%w;wjUHXP=1&I5IX7S=;Cnwq6-6Uo`sp(Qo@glhRu)%5IxiF zVUI-;_G~)cn&NehQ3?#S>PCfa3AIN2F_z1!WQ7v?(H%|>;n9s+r=_k$x(0Ibj|uzN z?38*fzV!vAmufoa6PaQthZpSp=s-OTQFoih$e&?UId-$r%p%yb!pX8L78RJtP*}el z`!YmBFjrqfT~&^pe$m9+lKIG=0B@tKJS>dUTYn8Uk-salHnIQo*wn;FpWyWd|DU;V zYl1P|KrrU`vvD6qJ-uB%XRG~0#oicY9o$;V?|m*uP`X1?HrLFl|Dh`i6Q+hgu019D z2*-xjC9)(A;$YZ+N_)_|_H+LM4UrC`nd-|gKcW|e5mu24PqKC2m#F_m|r~(o-tp*{XFc_Lh;Zj>s4mb4v2tHb>oK98LQI^LXnU)>!pehpK=-12n^ z4!p)03Le>ex7tjUCen%IsC!&+6O357rM0ZqIV~j_?f%RZbG|xrVq49KJoMO^<-sPl z*396I&ls5~J>1wFWfbAyAKkpT;*Cl>@*7Ix=y$~^EEDObA2m{3V^IDYQeS+yxvA6a zU5$UKRP@4)9+(Ls1eDfpneOij)!&~VtgtOTxAw@pApZE0!Ma_mgmTncthrSXGO{*t zX_a4~|7D{BMvizD}BxrM1mh4J57JUvXe8LkBZ=%N_Vjj6*U`q>dl(*I$ zDo~M-eZ3^>!48R${LF-)>LtT|N+08~t8cn^nrh}XMn+8vWiALy%o9sXGWQh|xOO`a zOw?4wsEmz?@nGtOWOplV3K9~Q{7S}mNR&&i{P8eEfVVbQFt|&4Nkf0YwS=BtxvK3w z-{sYr0bEEe|BFhwE$UqzA(vL)qsHQHH6hoob?MpUSB``k7}Rtd+j5B125#L&_n4@5 zW_CIv1(UtI#28xBNOM2F@d0ta2*+pnaODFNFP%H|AB*AhQnE6j521`$KbP17*oqwe zMtABeSqNilBg^AzR!1PQt?Gf`HMUc4pLMY(jI=qfLKCSmVLwY;)&|Y#g-bX`%kQ}f zVysp*CU8Z|Eb3P}*X)zL$0`=~BsW3@W6||V8vwRs5iNcL z+chlcKt<~i^rKk2GAToOojWL%*NyeNW$+^mxo`PPBpa;Uj`M-2d~SN}K)swW!QnVB zoCqK<)cbC)#Pn+}3{-RFtPCQ;z`zNtB3UhIRaUShdxfZ1Ja5}4zXzivPq4WDQc^7_ zh$<+P24NjvTh-;OhXFsAgY5P17_*o3$URy#6!OcM!iV?zCZc<%VgKlvPQlsL04N-b zw_Oru(CT9%A3*V3H0;`PS{K(QJ)+uy`a|*y`9`v_i87o}Vv@Db{ko{QP?S<5 zZ=58{I#+ zyK?d1bS%glFK8VfHZ8%wz08YP8wr$tK$qUt1e=%X9tLTB%b0C&>sPC@61F6)RO;w7 zA4p0pf6Va-)(x|l;LwA8Q3kEJ$_ZoiSAA5<+e~=JN$|p2Do-R^5E5qTog8MHHjE)M zv$XE>4cUw!cim)@9b*sR_Dn>(rYbG^bLEql=f4M28`(^L%N#A$p9yiVDHW@pR_c%{ z0XI1=1fjl;3-h?}RWH)uI8;bv?QEiHE?&qLyonOJv5XH5OKH72h|m_);m98bc6J7 zvH;0I_9azIE$o`_l^X9(rrnlUl;|ULV}-PRy!&+9Uq{QLu(d*-ZXbSQOm_}|(<~V- zkRtgq(mlTC%Nm6fa?_iKCW?`4Ki9NwHJN=+w@|HM3$A4i$9P18gK zYiMp|SiQF;keglEbq`x+prAW6Ca3RBF2jc#dvhR)OzHHBa4`pFt z3V^6@%?f!SobiI+5)<_zG&ryAmFxMM&EbH_`NW^3ii8x{w$>lFigY#ZMDBEX+L3pLF9XQpE=$Pn6@xeo!Sswt$_n7y&gAKsveg%bQZ%r_TqcOS_& ziUsKS3a;HZ8bsbS=%+2wx>0leYo+p{p_siX%=x2(xT1Gu;`e-~znSYc1VEbo-4xQ( z5JriAtswmK6*neOFZ{i=z57pz6;h6Qx`Y4HS{utluj7jWpMPm_9`o1R7k@W`^q-4(}% zE&4l1^M?PUvh>&8BO(1;JxrPZ_hI)_C8N@NcKqHiA8&FkYC;$dW0q)cIUu|603+h= z&Q9@`u+v>czy8|g!490y5U~bK=~WIP-y^MAgQr{fVa_N>yZ;P1N3B$!r_pcCY#RC8 zHre#<2ls0_NS*pqtn|Vx3|w(J1Nxt90?$97JyQRYQUm%6%qm_Hl?!lll21tl$f#OCly~A*Tl@Md(bVCP z@i~A;Y&y6<{O(0y1nE@02DA8Cd(<|2U+YYJ5WQX>$^Np6Vbjxm`7B3&;zp&?+N(E( z<#W|0t8k&(YX;DSeY|8;n$-GYXtr@G9o7%)B^#i|rWuMBxO^rHNG2=q!J#=C)oA8A z$%EIFHo30OzkW&AyI<$V(itdisNE`yhN4+D%%||1WZKTv=zf(5r|d*qIX-bqZ}k+v zBe&!UuP9@3nZBHq5Xek^Gp1zrygW&T8aBxks$YoE#e=NuW$}bc`MnOH^laOl?4En` zx#)x9{Wq}@kg}wVnu6-$rOxn`Z4<*LU->S%6tji{xme~j?VWRHvlza?)23^^9U)K3 ztblad_mL@Iq@u}XKGT`4Tw;X|m>4v#QpQ*?#%6UZ%3f3zWIHumgV~+#E2axEGkGBG zF*M*IW9C005m5g6LwadlT1>Fabz@pHzC>$ty-G|nQuebqgJ41H&CtTZP4hCH&Xhl$ zN^Z^A7d+BhdxV>xzJ{1lPd@FzXtKSiuk-1gUn0ltGp{}7z0>c%!@IDN+wR;09;c1s zYuB|M0aP5;Y_+omKJA9Lsi-051BT|S3@W6xO_l9s$+bH@quLS6-K?D}J|HB$Z?4tF zI<=ipHj4!`9`jJm)M<8(d!taVfP_sMF%i3dpn&Y2byyhTxFdtue8UZYvM4K- zUPCx6D%Jeyy#M(@oa;8*EWZQfWPl0)JR|$HA_t2rvj6lkkmn!Lse|HT`0Fc@`;Q4~ zqp!SNWU?+epvNzI!9BH7QEEkcE!lc?zUt-!x{M{fC(%@u-8zI9;@NM?ugrr_RC)M> zzM!hE$-Zmip_Ezv@FzK3DLmlSmCD>a{qpG;B?I^n^(0IOXSg?CMe4Z7fq`jvCRy-qVS1%jeIYmY&XBoEq@> z9%Tb6rndVoA3ZRR%RM{_)j#QEuHq9R9AM-6)Ka4x9irzheev6kcWf>eo@GzrSILOQ z6@DFKd>)lIs_*ie1+A1OU-Ln3|K8JGg(n z(_u{rDp8-@>4uBf*?R$88s@`gcw3MKNHgAvfB=e52m(WDVtdt z83OTE7hntS$35I%N{adTf+c93n%u#DqHS;P8f9c>&7i^`rV)-u7BpI*F3wwHXW#Ha zX>jm#C9grKzZ8C%qx6oS)m7L7AX!%>hn!Akk=Lgj>Jphe25md3Ht5WUFx38k5vo4do7_|w@raw#H5^qDJ9Vxno zz7RD&(;^&rF84r`%ZN#@fzGb+3G?CYY$;^SGvCPmcTI@opS7T{RwKVX!NIQ5FqCOf zA~RAb=Fl6@)4Xm!T0)7sG{ZzAnoQ$3%L$|jd@d3tk;Yts3_y!90VtkWm*hQq?J@Iv5=SbHWw z2a8kAvOq7hYP8fqq!jL0;y&s)QnIN~D~R^^!6lG)5MLvdkr1EAD5!gOno&%ze!Wv^ zG&jTNb}g>AXY)G|l}_T$JlZ@j0>mfDq?(K4tZvVnt5CHfxSm0?FI7wzMzqoQ;NGY) zf7~0mx8JW>NQEA-&bp5AY27VT^!d8OwVTTfZ-}%i07h+KS#6kwK ztAOzaf5C-`m3Fz&S2?_?wJfiu3q3HE^lMo6Gw@W*d+E>$D$|pom5SSWmT-JH$2a|Y zN3g8{$Bci)XT@I{f5!S9zBNDE9h*u4DpL?orCGd4M^|rRz>sVUKM(YX9Qjb@b}n^b zWu7cZHiAgK!EIz4-4|0 z8N~2h$u#lsSG{olM7C^}VC`K#$2VA1A3!tiI}noM&q~`LP5Vy-Mw(U8Vd@3EfY0H| z41VGlE^4mi635}fE1mMX*=;}y2Hj+Cl-gbX??(LrfpSFSpx@M(hQ=>%Vw||9U9s{{=vblA3XO-I{)%1x%guy zwpGSs*A~Fs(z|NcxRTdrmZJO6weqsZp+rBNP-b9A1L`~4;5z-!)13$_8z3S}~Qjz8TC7RV6Vz1+R z*Bzc8A?W5(?Uv$OBm5Vf z1Cc|3e9caSfs77Np(V)^*OtU^OGeFx{PlQIlwLvi#ZLfCf*BYmFpKD2Hc7`&egU-F zKTvs(1b~X1G=vzH-fmV59bF1+C|kJ-iE>F?g|ry{JM;nelK`1#&U|Ra*Sh2o3|+bM zsz{!f;;=c3c|yP4GtUINZw)s#4W)ny8SrbK#Ngsv5tE(qVNd z-#j|of7?Ib(wcO7(-RTM>_0nceiqlu_A&|fj0zp_uV|*rx`D0;*`2{^B{O|`WqK{K zrc#i;Ey((%t}Z^0aai%puW6!!M}hVoBF82408sf%T4vDd#e}qnnzAbpTUVYXE8H7h zRuy}G!?!+F(p;Y=X!E=`ks{(~_qym!)Jyrd)KH@?d|S2Fuw_~`36)$abGip(8`a6# z3LS>aSH18Ghg-4&?baM_eSTZfu0D>Wo|S;p#!cM08nT^qz2ZGq#d5ll5;2#{wk3PJ z3meGQxI^|9yy6FcYoy}OI(4q~(Of_hsn;53OeF{EW-z&#b$?*m_5kTh;n2L(YLA4# z+x??f+-!qGL$jOF=U{p((LV)TX=G{xsWf(HT%hCOI8nh^U2_5bsEpV)BO5@i?W_)4 zvz54`WAj#}liZFKP2{!@a&jUduKOQjOy!cHGhSB>w)%Q{a++URzKU~nlzL{P1a2zP zPd9=ctlZ2oH;1;D&R1QO6^nnWh)E5_@4_sGN`~l1aScyew0DSk;LbHC(c&+W&R%>H zc|4zNyeTT$y-z6M-zN#vyslR^AJV03Jh`IqyNF_zJQa^1=)4ODIb7Er9=igQt~TYK zQ`XXP%Aga4{)u=&I~i3oZuAjwhYQUQW6($8X)&)mFQN%*g zj>a8H%=@}~Bi;zIAe7Ui*PPomZ=$-;Ka{HczVg{iWK-O%TeEw^ov(c*aI=tFssQ^V z0u$pf2<6%4Hh&8siDiFyzO0MItM-~HZ}|8R|Ad6pR{I|*K5wOYO9}5k>VJvUVh4by zKiiE9Ypy)?V?26Yq_dNMO?3Qc{guAT%8S|24r9T|d4Jzvpaaq0B%VZc6m@!m)noe;*)#S5A&R4SA2Uu0%`hRh5fwu&Ab(1%c zi(*A6Xnc5@WgBxu1zn{*66Z zF+<2e5g`5{$~n(0fut-V=kW&Cpvl@ zU1(L9Ay>2Ca#6kcv*P>@A;s~2D3LPLYQ4o7g>^5O zl7@;Pua(Iq!2o3NTl*h?viks@ra)m7sYE1|ZuMr9)1C{*{?2k6|Jg>m zft_~Qg$EHp$_Ui5ii7l6lv0>?A=hfbh^0ck7f~<-d_BkdrDs=Kfi5m-OB}y7=3Tr zDQWb&Gys1`tEkm@^#>Br~kjgC{k z9=hy>R<}fd&CNgumPcfP4s-E#jb^_R3a~)t>;>v2P5gcra=g0l`c{g#whk@Fbjw6c zs3gZfQJbEdj7hAsnWi+=wu?uV>bZc&H74B_7I8ocAP4))5`+|6{6gMOCzRbepS|Jj z{lzZuT~_Z;9LbBv>O5#{Apr?*a5xq}eD)H`-x?Moq$>g|neiBK6+o1)1p;cK+JR1{ z{(&jmeQlY)xq$HHp<`XM_E;}4gA1>f8L}f#mCJJ_Fc~z(4&l&fJP9Xe_=ux|5uF3# z>ZvB=DiLP?+PJsBH>`Rf7A`tcfz1xELUG@#$L*U+L`Er2eVORMOu-zo=teuEDsm z)?~C!z_#79&$jARqHf#KSUOL4*4&xcU|3j!EpS z-4XINy+5cU&nHu#o|K5G6l^tQiCaPNw5B>p#IF=E-S&RiXUmrBC1lg=!kDk%;>l~FSFstwE6Ga5YUr*2TJ(?&IqA5EZtEWc;635U2D`C`g}Sh%W}!_2L+R&Asnqmvq|vscId z$x&jcUtyuZ)LlIES~k};w@AIjo8NaU7XOgRc9I!u!aEXnYv6dw3)s1-Fs#*CAs`47 z)lx2$19E!hqQz<OkC>oCKA? zMr97E>fsfDG4^sfZ-CiJCywV z5pACwM<&zBHy4|%tuLAOCTKj0N_yKo*O6N^_DY*Ifl(U!M+8OZHJ-N>)e@rdS;D+B z$>mu=Ky!-6-Y;5e(s4%yxnD{ur4lat=oovhTcWzc`TD_yTqNx>yOuZ^GrPI&WQA3P znnbe0c`KRsHg`LG674l_wJMb*ZUy^wBCWPW{+{t?kM05CI?Wxm@Oy7lLFt(7<r^PTc@OkXc{zINwTvVp9b@5>X$;wUBHVx&mpF^*dVg zVt0gHsI9}wXzN;zOEUE$E>*-Tm$A+z;*oU44^*@6xd#S=MMKXSZM9&2n<|?w?p|w) zd21t#62}6c2`0zX=r$^bOBI*8KW{JjRqFPej5V~H-hMX$Q>(KkGP|Xr%Gu#02r@(& z`e4Mk7R1O7(5+A!4i;DV9#e1f^*Xly6)La7?$$3UcCc@AIuBfwV9}XM!LD;G8jkVF z+yX9?ci;i90c^sl9suMlRvc%0E8J89O!sf?xrIXhOdct_z28`1Q0{lZ-foz;v3p`% znf)5}RR%t))D0DBv3cnB9B`2Wu zv03OhQdEC_e#TQZ1J#hX>GuRdM+)EIP{~l@|7=dpJG4PgXOJo}tOVmLmRTheuQo&$ zoyx*^PrRyi`TYu0>t28fLp9Z-?AvvS&>f)}2-E9TqJy(u)pghkuGNfNMxKX_ zUfxH!1Wv=3OoldH531B-F5=yp3cuULjKhI7StuySNAOe8;E^Qt{@%dnF>;;8N0!Q_ zj%AT2>w*l=N)}&P!aasbY~)Y#FSKf8B>w8Zy^=ddW&gTO7HK~0u=za}P_+obyVv6@ z(|4D~BLz^h#cD-Zn*wlq(`l0Hw-GK7xr98prggP01BgA5-zD1B)(+WvMK;mM@${x+ zBtwJhZgD`pV%JeYjzjIZ`7CeA;AMe`?)r3QVk{uTu=y<+@|k@+#^dEop-T~hxNc7B zkxM+j9k#hc?IBe`y;Ct^o)<|jI3@Hr{c&FmXV{|ww9=Om9b+~O9R_n7^RxLue`vEh z>|48dAq-{Zkux;nOAKn&fk1C+U#6S&l^r0rQ0H{qwoK?AL7>Do0Z;vQuisxY`rPuo zE!}jsL{z+srB#1(712_fJboC4fvrO>d7xXH1FW3mfLDecnc%JI@(M2XRqJM(#pvXs zsS33YV_WpA*x*}neI;%NiWDY;maAeGf^-2N#;9~bHhAzw9HVT>k1F;2i#T_A0y1AM z?5^LSKhOb@x5Wm#1WNmN9Y}&0z$8~Z;kYllYq_Gu4Z=fzNuK~Y{Dl|bV9?5PFUf&K zwL2LdpVcUcfsm+QQH-LtOur0}btgl>bImlh2D-c3=MlL6Pxo5fm<*f2kpf|T0KX|O zo}sbEQJ^`1<{RmU;hy*2cUf3J;b>?zD?8PxFO~hulESdY8TN8fnPrD z1rX{FrpWZGiCIPc2Hyd_XO?&D6R_|K{q79XJ@Vf~L?9A7-~*u5sHxeS_W3z;Ub8!U zC!?&dR{{E9wohxc^TAPlR4#*FLl=L`jOy`4$v~A5mu(y%6eag>a@{hhS}@cg9EK}6 zoOjyI_L+1&w&ET!@XB^33CY%P$Pbv^`ug6r7kHZqkYm8Mmjz)m>`kt9pb|ZE6dY`{ z+Ej44nK%&uGkI|CJ237d?pCtp1Vo*j%!r0OHXh`wwt8FmOn}X6mE3BEyf|AbUQ2Ky z+9WR<@nv7-tJb~qYCBc0lcPkaL7iw)^*SSH^_CH^_5P-fgy#VV(p{teRi>RfJpKp8 zPu4GsY7bNY=c+uk3aFNQ6T&N(=NFdl3# zsoAK0w%%vxVW_>8Tl&aEHazL%tU9jA^Za*yo$=U;0Ypi_T`we+dBro}YsY&U^TbNE z4-lBBfCZkc);}E<{k@9WL`*K@F{nKEj8-}QKE0!$?(1b+qx6WRPZR6{9PS!Q^-7V% zLJYlNYH*TzpLC=x{=hY1?FJo3VSEfZvUBog^P|YGM(DzZ^tpF3C z4S_j@CMZ7q=9&!elsRB~OgiJS6O$c|Ep@)z$~FNk6SPj}G##bHeroNR@LGglyWYJL zfRI$Ywoo^eC-h|Pp@NS%gCLy#cy`F$ zY9ExRM3Bf5LfN|&K11{6&L>w?Y}?bv$+<-%DH@)d%_@me#JiK>Y`}BY0G2nseG^4T z@yL~9A;ThS|Eg1VebnUJF+sZ2dqVXgDKkOLkK&x*uOa?L?abikTHaXst}jlhAg zwVy2EuV}xz+Rs2k>`|Ax_O(TgFxwFPbIl zf#}+8L_Ip~?;0iTFJ{ru^I$pg=oeQX+^%M`xv?f5(0v+{-7mI~u>;rfLKL_h`T;Iy zU|R>-L76^$GtarOC zxiLa-kNYKM*Kq~L`*>t#BR0rJPZxu{{9&s0207f zj|HYTUVdG5U!e%0_A`SdYA(a%ya1?>k`EWf4-!AN1Ceg3dD680D~ksPw!8AjyTb;~W<$$)-9Lqyfi=k$UNiOuI{PRt`rW9$ zM`z)3snuGG0480(e%tMgfzClcwjo&7H6h@Ax|50u<##_m|Fy3=Wg8lj(*m;W!cF1y z34as*Vi>J4#SADCsr>mTm>I;T)hh0mQS&$?F83rUn?v>KZsfZkkCtCnm?>B^oQ(!5 zr{5_K|D7MdZ%!cJV?(Ws6tEh^zv~Eq^x?=Pmp{nUTF40Vt#>g!ITF0Mak~hiJEmIPcjYd88~JeMOGmdtZ}9u5Y~AkkyTCTmG9#SWXqoc@ z6x%JB9%fCD1e6@2{_CTXDtU6ND=x^W;fZ^9BsKiep;FjrvGpW)&%dCciBBR1_uWHfi%W(oHK`#D@^xC@$atJAv ziZN{Hy`wT_USe$F#C_gSi*EGTmEKhFGmF5fNwU`nzPi29iRN)TdAoi#LmG}LnBrg($2 zHp!1y`ZZS@!XW-R@DOW{blx>h(y5vwe0sZ()$a(wa}_|W1JO}V&7fl)nAg!eDdO0UD(|x zNQi&;#TaeQfZF)`*!jnQfCzWfC##r05Hk{RX8!)}?$7@P2=%+||E;%s{ByVeAA|nW z75`Noc((Z4miyOr&v=31;_LKV!u#`4DInIrKsp2eNAc`G=2hVI|Gk&H+$sa+)#s8i zyyE14adz_pcV6L}jyr8LauKle3JxxP$h0yNPXHh=|6z$;*?EVUI z`~n0~#224al0JY~gu_qf7btj~uc{tC^lQ0BiRumb-VZ5*`tbN~6why-$G50PrSo&p z_%@~q1sMCS5qt7QDFgti1n7|~T)>B@qj6KOO)Th5?zjuAc&xDAe(804(>%Xf?>rz~ zvom=*+=79G)WUwZwgCI&#^sH~r*txhxh9s0rLJ&V0e?HH^0#kdU=~b$%lPPKtGmIS zt=n?}Qmahb4CuL^U))x??26#CIn|gB#47OC+AVH3aS+yW@twnUI4x2hVr+uPYY`WE@X6k?9y ze{fiFsCe%<^+55$@7Lap(fR4DxQl?v#VBjGqGUK054hf-+#LPR4%m1JP3F}D)5ufa z;@r8I1D+Cjc67^kfG5!M0v>-}s+SsNzdKTzm@Sv~!`fy5?CE48 zeL|1_gGu4mM?@iwhX&x3!A#OKjIFL4CauJPC6e|FSL4-ee!L$aROr{c>N}^dINCB8 zAU*qQE$0^1D_mE+FWv02)C!bzWN?{Y8wN#0L_qbcRN~8~OsC_4S266tuH7!1T*{1B z8xsZX&`?PjiyPM!(*$FTP4arnu`QNQpEpyv7vmjJ{c^vK)s8Sd$<7>ipsBe&(HXz_ za3^FD0Q6Aafn9P}tCf#LfNW~XaZtd|2OuunDOv>NwXFl&y|&uOKuqC`Q@{X@&+A^O zR;JZuogWtqxS3>jzncJxP5nrtjSZ@lnJi8mD^k*FQY(k;g!B zvuLt=z%KQLH2sBRYB>QpoUi5!6o15*UA~B!0`P+`g&kKRUh<#SUNbFTzc=ISww`bD zJ5`9(!6@EWT}^zntQgndGl7MPpuOdEg{rx=9XssYDthz`FuvIQke@-4B z{HlGRi+IlJD~x;RU)Fx4SvvQH2OT2Y!CTrtebQJVkRIW71H6+6h&yKlNAulHJeAXB z-BGxbcSi8d+XON)(X(cOtcCevul^QKVau7Wjmd`csZv4rt50|9?W%fhXXbA*0Uahs zE3+xR%Jx1w{HZ*qP~?+ebAwxilP#MhHpyO@lrnglBe^n+_oRK`mhk%40+q1`N%JTX__!?JVy`u#I1`99N;Qt<~xnK)22s64@xCb`5DCcwbX zF(xW@d1Ji;8<>_ZmAoJJkS?Th zqvGoLVy(v;Q^2T z8+Gp))b!i8eOj>siXuw2qadJE5djgAB2DQfAR;Xg5P{HxihvCe>AiPCPa=sBl|LZ8 z2S^A}I)o5fKtjoL=DP0dp6A}(7dtyUJG0K{3mtoY$$5T{&++*}>!X)M?x)}1eA!kN z%VJ;Zb?^C2FKAGeWEzdz0X1bo+_kptv!Fln->`sQ^8V-V92-)9e@;1Npu$4?rDOZw zUN2X(oQ!%YWH>6gFrmy`Dx_@e_aZ{BBu?(ac)s`$@}5_@H8ue9<*Lq8n@rO#s9BZx z5G+PS=k)HZvk?o-YIVI%y9-jS4Mxg7FK#!LI;O~n$A>%ZwYXKZ_xEXP96&O?Cd;fk zNsKskP5l%Xn}hFmFMwi1K|mkU%=9dwfqHKh!d7c+rjdMTQUJG31a|{1oaFwFYAY}Z zxErwc0K5@B4|6r?z&@J8IyWZZr{?-+ri+%Q2_71aU(*Rpjp$(si?Xa6=G8g@zOI)h z%03(Dr8Inhn{O#cvl8u2OT2i{i!>Cfs!-;VFbKR=ol%j=gs2LU_Jm52BWagC_pNSu zP+(bt7=);MG4j;)Y{OVD*dgOcgG$g^oIfWO*=@r8 zwqNHPFjwddt#|4t^(v$yU3BvY%quAP01; zD7@C0LTVq{SO9hHTkcpvMNi9%8t=~YB5Cfy4GyL9zqa#B^+?-=;jm7py!wkHqctj- zmV<4NKrY+iyX1P?lUcTHSKlS3ilEPV!vxC6UpuV{6e9p*l+ouo=f*tpTsBT$|7-=^ z8qfgUKKa^pXpTz0-l@-$HVuwqktka1FJfVC1(`tlP%bcS1*_g7U>}6=Aw$YV!D%M8 zygod6jwoE_PBZF(i|h%ao(%<`GldYSGg^=H_ruW}>#Y0c`+@`*y@J z0ZXQ((qOLTYE<>l`#xaCSkt=!sN+6527PsO_SVzdk(1?0QwA2C{P_?B^mA@>Ze+O; zq02`ZOA8x35wP?fwWSO@?c#f$KWS~Qk4XH%>Ue9T6IyuARI5O%hKKhcnt?;Zq`k7VyjIWo zs|UnbjlR-EsFw4)lP79POLSjdJb{{O4?BI1);mp>N;{^H)tANziK?- z5_W9z%a2^qR4Ra!8%7a@I;T5DL3AZsc$HC-Oi$t{2q*{1?~r7`^RmTZ@b3~=7cFm& z+Tw%79g0Is%#+j&cD`|2a@O5A2N5@bWuxWYKgLxx?Dw&3O<`Cy;az;PI9~A|fSz|= z&Ht(P-<_Sj%o;?YxOrwF$1i4Zh8%^VP{8@em*6`&jZ`9VrD?3#Cy%cLxBjgDPTX7B zcGNqbqch;2Vt8-=KSw`d+(;6+s%52XPxnADbNc+8oQz+dv}!Hh8n~s&4XY>H7Xt~$ zt4EozT@{e|)i4hK&N;Z6bkvdtHTOS0E)!fNsS@(%!w$NSfR)MQ<>EsBbho z=?Oi*KPTcizDNEwGVn2t2La+to{J9-1CsZB@g6}JloOY^T9&Y2>J=l)IT^pQH06-i zT2a}x9^s1v4f{2xVtiPWrsnJ8P2x3oU9|%cR!XrAmkMgp)@e1)VRKhK zK&9cT?80-ox8CZ;F7F7y0$6hag8I497czXnYfD&sR6F%f-H1g60>y6>88YX{Z%%yI zmpf70u1Ax8933=p>s*edQcq(z=OxdwnI172Os$&XhI(SCWpJ)QmyQ4=V6wy%QLJy8 z+XyTAa|-r#){jpf2obCK;jL4DCR(Ov?{m6Z%9gt@aYN@_`-&QP`a5I7p)HI13j_$( zBM=2+V28Q9dZr?Q-4yxx*RxZ)@6!2Pf9JPF5!@oFzYEiOkIzj&rxG}-K~ZCEjWI9X zv)mR0p5+@8PNp}D>5oms%=*%{KdO|=ugi^+e3y#Ok<{_~p>0Ws>FxZ%!#%&BC-Odp zI>h^C=Iaj)RoK-CI}{cA2w+l4YqQ#zpw$N1vVqu!@C?%zkP1f)(2;p9i1~SqW{Ixi z{o-=ad6h%1<0KA)e5E69h7vbdu2#r$*{|Kw(i84F$gTOAxbJ66bY{w>`@WW$A)xk! z{Czik@UX7bu6Cn|)p_Tw<8FVlT1tMt%KDL#;Rb4AZc(#?%}8O`sPC`ar{?FPPGZQi za@9Y_s`Ec4w*%E)qB0@s-3lc{6qG(Y*V`E0vuKr(iPkKf(gemk6IIr3EM-HX)^s)Z`@=5nPW8T>ZqG z(G>r^=nabg03X5sGD?WpNR~zZ?93F!DQf{05NA2#)i8KRPlcKy#|GP!kZmT4ss~&$ z`wEU|u}gExqAuLGn90;YLhu>p=5^SiD>XK&9h8V9dTdwha^v3kWa+$wx3AY$_wT`j zfNx2!M^epFq13fxK=y9$rM}wI56O6L`Tk39k2!gKo{fRXo0TipQOEmD>wG(j#T9np zrhDcm@^up)teC$}g!^aP?}sYzWb|^xMXE##SCxP=)b7oKELaMK|0E!FQPEokwYY9i zLi1NREJt8!S@k$id3LJl**U)ee%Y`20yRe_SgiW_zXEsAS?(Ro0rUQ&?O!OoH#x=f z|G0*pN!M#K)-~XNU>P=YFcCg|J>rt|M{F*n5p_{&I!hgf`FFz_nROoU6h9+PMI zNI>e;#)AGHk8g0Kt30wY$rpyqC-ftgM3gIR#}eUJia8OSF$06ta!pr)d*2UokmY7R z=YZ5nF6brO5c`1V%cIvDFMmSCsx_f90#{}m3Ooyycvhx6F0usgIP#C~3Y`$cT*ziV z0VM>n-PO>ZRscW&W9F`kLZO940K; zHjYhVt>~$I*nZm4G045M8!X;Pj7sgJwWl)5Bi8lsMz>s7sT2IipJpTzg*G^d;H?>N)!a;ZbA7V7q+Hb#VuAkQTfKl3J? z9niUg$xeur4X$XlGRKrXrq_ytt(%E2_+`H0 zj_{i8)-`={h`AojZ|mDQFN91PfIf;|lan;ZHhbq6PaJoiFmJIj8VgS7&8-XX<~OW^ z83r_$ZcN1pZ`^%{ud6%bjiObv$f|X^d zGL2exm&%kNtY^oLz!LGN$re0!zs{uUxOV#Go$Pcfyih{o$R$ZSd5}HPA!gogNw|&C zZPP{Nn=>k5ZzLr}e24Pdty)@JpB_YEGis0|@0~2oM-`O_r_EJIg~3K*(ct2jlEJN} zweSG*VJEbOvT#prYhX|F zW&;)Na-$UK=Bm!lZ_`|T(yg$tBKvQdcyE(w32Qs70wl(NobOnecOV+iI2VvdDrF{f zQAs1U)LPo+5MU@}Ip@6bZ)mR`W0b@GI&FzFBlaiw;3(@BV|9U)PpiAg9&~7wcrhd# zo3FgjMM^DlK1lGkt4V2;UJ*rslY+QmW&QIl@BuGcq)xl`x<3%rO?L|4{M+#SWdB2E z9nuw*huH9e7~(7s_M6bZUiW%FoK!5`+ldIKbJrPZmX< zCNB*vO2c@SZF+CDc~`!q*=V#JPm{IJcB%cR@{KU3oOjC(s7CAYehz=Z|1Mo6@Q1g? zI3I<#OO#EWRn&*4xNFLtUghQ=nDaY$=hrt5Q>?me<00Dp=1a7RkRR1@1vv)$D=k(N zNiC;W-@|X+dHGY<6YJk{{9Adum4H@5vGMAne{jtw6u-yV7ZaXaKt^n@*Rps_ix~Ot z!!tRXwUuv8r3?Mvwr5ZUPDp<#X%Cxa8htnKdu{ zKEd7WjZxN&n%BOLuSr6l@kz3GZ z;})eu`R0@8Hd@`NVw!{CHU(<9l2<64mGXUS+~~5{TjPMsYarF13h$Tj#kl(3wioS^ z9xS{gKfhuk&;i)410TyD$Z+ddukK}Nea+DC0Z-;8yz(GPzE*~;faaoQZy{}43xQw;W`)d6N)PWqN3IzN9rHZ zmwAT^0u3?t`L1T00%fpOJJT(Fk`ZVwV+>Zycc#qNbY>I=x*61`)v zTG;P|@Lpm(&8`&bMPusC5d*&}zOa&D+DD?gr|NVoiEejBn*~etTqaCXryng17xYs; z(gL65za}`XJ($Lgh-9tKZfp&=$^e@NPYt*FMr6^ilb4db$Wpn7_U->3vX?EBS4JB4 zOA1}>GCvQ%9(jxlUt&FOcYJQ!{n#{s&|R?+XQcy5in0AV=?M2I*?~xJA>0qbU?x1! zzxilI&V#6HDn~A|LM|$gzwpC%RWDaS3bIE)WfNV3f$cG^@50x*Ls9t zc*EpZg_eqFtr`GYi00grP=*a-Uc2DtORVyLxnR8 zmvgR->bP-h?6Z3R5T^f#*tz{5B=Ky&Nc7&^PR3nDmTL1mgUoyzdT&VW0F2OTJ#_1= z_l+ab;KWVv7_-AR^p@X+iJ4uyB3Bw0D+x<&JuAMaj{`Sm+w!aD;cip=&?LJz5RSMf zAsVbN7u@y4>j^W}iq#_9zXR>=LUy=jpq|!&+2~TQ;w#Q?>6jnT^S`Ba3gYwuBH-B_Xih6utkHE`!jI8 z`e05}iOEg1@q6M6{Z*o{wO<5%Sc*=?>s$xAs%8fagy9%^(wzMcB9NQk9;=4xt>QxE z7|xl$4e0p?1mG4*t){~iTT$_{b+O8U@(dEn?b=S+`DIpxdWU|kEqVK)_o44U&*g$( z|NKocFt-!D?R|e)A;0H@8X7V^HDP3mA9+J6M!u^?@pn|$(fH;J)hKlk?F<-9b0CZOk=- zD>94JPE>XT?=zE$jy}%; z4F{rOcW4Mq{b0fMjo@2buPazA#K-5liNrO_!Th0{UXTzzypNlmBsH*qBabGkTxr%) zbm)}_0gJ1W+@cs-?b61)f6&1U11m1zm{Z#X^wUz z1$5*ozMN~5lezI0w-wO0%QR+=%x+L0p*@u+C=@l=mTO{8MzGVjiB$MP;0E))!m%OhdhT6 zR3F3D6Q<@lgC96u&6X2i7`hyuvKY*A`bI795&cufx%~n$`fDS4#>CeC#A;8*!to`V z(;TUL-HT%8XRt_5eQ`6(<#vgt(N8aI(AwlV^2p?nWYRZgho0H@u`+?$z$@=h|7f4X zx_{bvPc;GmR36E`q}A8iI9&>JRKC!iJAil1S!tkj|3wA@apVv_Zz<#L9pd2bsD`)$ zgJa0uJoF%^W5C1B*@oR=Nk+xa-q(@n9o76Dk+Z}q_pqaLjJ>JlFmz>x{%T1&5OQ1u zXX&Lw{IZd=6b(SbJ7e<)Zgv;8NgvP;O89F`6j~X#u)qA|9|P(KHY9oPdr$eg)2_;} z;PH|_j-$i3@Bt2BJA|!3;N897Mdr>%1pLHAck>|fHNQOk$gcr@#-0NzmOrLR8UBC+ zIq+`;iv7KN{;${qmR*ZJimILW6_J$Fd%nx40cda4X3y_a|Ho(P z6ZOB!pu?4!oZk~49=!0c-+}$j|9OkcfB(?`bIxO_NfA8F|M`V}Q_q7tbdyH(ng6c# zj=u`nW6S@4Gxz_0K?V0eU1e{M?)gsn7Q(Vw9IY1x(0c6mHqfaZ0m_~_*6$c_vRR|o zeXNGHsCdly?~aFAP_X7y$ae)c1pqiwnB>;9(sbt7w_tJLZjzh1cTXu~`NIgo%hPii z-jG;flMIq=FP@+~}&(VtD8X8G*UP7D(Hh3pX8(H-Q3B(Dc5}m2*5nJJEx_11WsCnL**0r#J4Ps!E%awMgEweK{4z4ld=$}|s!9$2^7Up*_ zu3}g4;?5=eNbosP+mEaDThg%gXGT?1$%9muwB7T;50v($y^#DTbziDix;v}g`@vrl zuZh?}Z1GZtq{Kl-YC4G43|n-kEEZrHu6)|7=}T!Gn1EOJmwx}qx7|SZ6>GV3y~+1<5ZwRo?pHsVLbK9b$>JELC<*t+*^ z59mmCqBY*Loz(Js>)@X6A&2Zw?ECK2H@`=DT*hJLGJ)$2oDlWq=?Ww!h`k}G|5w1$ zQVam)+hm#GZ}=bqY3;G^AJCggE@30>?FU_3o|Xg1#H9ZY&!qt48hg90pYenpOlxCA zv|cFEDD|qNCGDzE$7(t0D_IbB$7BAm|ME)yr}W!a>?-`@+y@CD-Tb_w8ss$HpR3WL zmm(3eQ?L1~>C=USD~^1>t!}>DJ`NN#vHwK#ZRNTUr~25qc~4C2m-7h0Vz-?FF-xV# z?xWve@Zoq#8?D_jMl_h{s6$OE&M!|i%MYrT_&26J!9KX)Wucz`zW>axKe?h;d`g}_ z!8=|7MmuC-MazW#iTVu1U>z@u=$t4anUver07uYb&q2xZuyvl1>R`;aN>22H52t?! z#*caZb}k0RnII?H=M|{(O!|IPzcfj`qcs^uY)?L?6+Fo&-PDmb5;8n$lWS)+H#o(o zop3ojlTgSn4>kLIi32Xvzjk<+T?w#=4c9sBs#)2kOYP85YfQ>p^v|pX3mGj? zfV*Nj@atu-Wwbv$q=Mj)5sdG)#217A-qx>n%AG70$ishCR`usuMPzo;CkK*Or>pcc zRGbjUz-cvxU0TN;2k!;SR%luR7x4A{UHa4E18MQ|o|@-O2E5DWr`XH-PaF8K^~JR~ z2U_d>p=iZ2R_e*05k9`Q`0Wa>kMy@g<>ar|yKTS4fk0IXv~{I1O`lG78V4x{?%oHT zCn+|FuMtuvN8P&<(#xC)nD#CDW;G-0+E3p0!1=PWH@^+tNEZW)RaO0Xx3{9}7A<+u zkyN+!>a^JBNBo1uVrror@wRsuF<%I*b7Y&xmPg8|r0WwLzfi9FHoIro^`u;+&!UYh z1o@|GH?zdH^ozf41%ZZz+_DFE8I~eoT6k$r? zM^0G+!IcyzU}>||-u(L7>NPpLEc2xHse7p&wxevz2a*ZoFSZhgFeHyATSjyK9&7AyIWps78$DLPhxaZz2b~$~t=jajG>5`Wqp74V8B!Cjxk!Nzp4;@c+ z7CT*HCU)t%(dAo8Ct;9jm;D|iC7cC&Q=5s|Hyx%gicn(VGG4<0%EEIn;){d(QWn2+ zxzhH`DR^&dYK~J+b`#~Yb_*m=WseLjG>7$x zVb6#It(`NTzlhnz>%zA|{j5uzPVgGj&XkNlq7=X>c!}goQ=meWf8X~lfM%5`k>kom zavwxZ&M=DMn?-6hk>MYhDX8(^SX8JfUiA*%^dprqMxZVor6j+~r@jf~7EWnr;@8(k zjuBXc*+4fazG^|eqsDR~vu;M41z|H0yY3tpgQ^F=P(F1lrmQE-e@CkkEEAT!0EQtyR4+`ExAWLuAb372|x zUnszNA>I2Jb{Lh$soq@C49P8@oKJ$4rlCFSE$i%PBy zx%~2g$1~*;R_j)iwG4bY)+DW@^e{fkNVo-~UWZ zhq(J<{xb{MC}%}`2j{U05mcqV8}zG;(o`0oDu!mq<+$vUp4+&`Ilsy@HvT%q*v9M~qBuf9 zK%?+F9Ui(!#zIKWAVaye0rd2w_e|wpf5t|scc32wi=PBK%`36I*Qgur35?hXz9DQx@QryQg9rp0!bzi?JaQ3s^s-Wf3juzU|Rrl~?l{;!;!zC?G zPNd&b4@?r`4ak^k>}^HAF!b2JFU54&+l@TD;A~O5U~oiuoQ1!_>DkOpcL<|q>-wDq zsN(9*fRHjeec5u(2<&k?#XrY&4msAFi$f`4fPu1=hU+RAzu%Yz7(8jaoW-nO`d49q zU_8CM;`cySQwvvUj~i+BH45oSJwGB{s6b5vr>PX5OjA{tuLZp6*!^9lj5J>WmWu61 ze%2RvU&~`tEi_9x*&iz@jF99KX^5&AzRVza<@b+EUgeZa$lpn-!FfmW>wo%Qed?^y z)m49}6G+1IW@jpRdC{H&9BXbKB}aUMvkr|3s=zHjSg=IuSBf|KKh%F|T1m~=yJD`C z2xC#m08NuK97x~cKYNYyt!!mK<(1RM26U%@dNZ2hLH~wYWPLyS6}9mSENjvN8b{sA zERtZxpDm`(>`ZpO%66Sy>JeUf4^XNhd2c=9b~fa{HpdcIzNv;k#M^c{kuEM52P3R! z3ZI3q{d3Of9IF(C7}(#Lvb&Oc!15(cAYK)g4)`!qP5@6z z{~m+VpKz>2g>w^DlFIJxHEKo&qq=%S_pU969z5pwQxk2rFWfzLn@}8fWQhyZa1dUW zD6?^6NUG4k~cq^b^6ykrjK^!Le98+R(SEx zgZ_h&25y{MwEM;e@_a~+!oEvJK83kRY_9?YIj4UetqC8jFm9Me5AW?1 z0O5^PXh!n1E({Os=d0bCXfeo0aVJ>H7sCo%9Wp$IyxixaOu=3i-yRn;SN=0|F*~3? zrl8b)mpL%A{K@peyuM$sit?PROYhf&bNEBHQKoLrO%dUt%n%dt^>`W!TE=~7VHk@T zEDx_=E#6q=R5sW0omarX=Y>^$2tgieS;90PecWNjCj+Vi{;n_S3_~woC)Sj#>-V_$ z{`LMa;eC9xwxt=kvK}KV{5vtMnk2M}9ut#2`-FerEK?J+?Dj_^C9buj4z8HgWob47 zI>Ng{o2O6w3?w$qY`a_nIk@m)8OqTkjEw@j?kVx1PLD1E3_c&H-Ko9lm>zr4<=LvL zaaBFf3)xRb%)m!!HyiF&?z1+z>7jq>1k@qRG-Tc>xsz#);y3hPw;Bk&8;=yQ2=2%% zi9@Ll6_%4=Fl9`1s z@B+Cg_|H%exT}mncL1(5;)2%;ImXWq9sC@{>BV5`xlnvw{WU2&Tdp+ykb76JuRz-l zuk3e|;vwuW=-L$1V)OpYmFnVv<)Rm_N3Wi?a69PVCcitfruZnxy4ybw0+X<5Fzw6N zc4?mJz2)^q^wABURCq1@^2RTPZhNatG4h4dAF;xJDiTGM{m0!c**M;?*W|EEzYh}b zlOkmxZ^ZjsAjnC@mREeTuiJ*@JO4M7WvTX#;~%t8J>arslyu}Cm|Dgx2vJ52TJ{++ z@y58l10POctj7WyVtrdzdF-8)mQ?n}w(vZ#Fx!X^f`0lF!00+x5 zC_XLq@IPg%b4lz#lEcs)_po8wQD}zDy0bI(mzQ$HjQ{XXy(|9QG09@yGjrP9I{Ye* zDWh1L8$p~%#+!PDu_|oWWK$^j^@H5|a@_Y6~wG+kex-GKU z-#WfOK$!eKTT_-*1r5z?&g;4Nq9r`+ZRlTU?XiN_^>@DFXq^#~LYb-|F8k>IAI;hd zwNi;F;%cGQA663QXHxrQnM)4e=q@woBlLsl)4JKbjj|#KGqkI zmTT=ytxS=3MhId;$hQFytrQcrdwWmfo z?6Arw3~8!ucj_@ z#a?9^F7rsH`9*+NTcJq^|0FaXg-~$2@HR5)0@8ci7yd>VdJzBi+#2mx94Bb%d9aD;5rLyjvk1m-8+kv?@qWkkFk3m%_!+PPkqtbSn6p$p1E7 zku5UP0Qrvt7S|8uft{WI8)D-lQs903Bn@idJBwQAv4StEJZ=8ovltFFmT-+aO6zk? z8o7|nRL4A)XF!dmCnV;)T;xKd?10(xqD%;wcIn=95s1yv4xKM}rsjKfJ__tFYOFYX zXjyK~qu6`-%{tW*RXTW^nC}j{i8P4!dlB6IKB3hB*@mb?1I!`B^hWkX7;hVWhl>xR z`M^n^j&RCop+-H}j|S}yk^xp-&qX1k=_3|?(kf?`h5Nv8QJy)6d?Vab6Z+ue84V7r z?1-q5JS8&$La|ug%jfc|+lD3Y{L6rcFLmApUv3~CFYY2%4kVyRsk|K5_3ZI5=;N^RR616(kO_%Y!WmW;$pgE18}z$I#)K8h5~EoPy#IdP{SV*ecyrWZ;nr>P%Y@n9i|rxt z@MF1}VGl8In=Ld>k$eFOd86^}?3ke1VgkI7uS;FQQ8?3}+C%&(66}&{^!DfSBu}ctvs-iW%2j%=9}+32T7=&#Pp`1;d{ zc}M4)ULR$$HltRRPl@@VgMTmYsvs$Mw-Bz;92uQ-GCbU4IhgZqZF^fK0ozg2{bcBo zU8A4!?C{L)za}E$JHal#vCP2QNQGHXtfX%@K`67j{8`|YrKLqo5jAK>-)~{xKm~O@ zT6hTBeXyors|D?G4-EB!RMuV@1+^VHVId>@VNr|D`XL0(%Gl{T<-j|DTm- z*)7H;1%piGL=1h*{|*d<(v!(@Z!%ra;2HpOm02K_XvpA;nqo$#zFhdn`?a<1E-LoAIMllS%mmc*E4+SO_zRP)Jczl zqs@2dOc1z%m)YQ2byqufL%7<%sG6qsrz>@hQ`P{<;QQsfKIzTIqUs5JfD=l@!-6)4 z@lZty`44SoBxZunCF=?}9RKF-%D`WiUE%#=rfNSK-`HCvzK?_&tvQFHSg zDWW*FMx!jXcFsV`RuddWzghvAWFi1?+e^(V@?9w>pVaA#7x$ON`bU937imW6<@P6I zk70st>5~f7f|6f{3T>K(dxF`lcv9#ux{5{6bTvfH`HpzB8HbS5Fzng-38s`7)A>KRorCdtt(*aC-s|4)0ybBoum0x_C zFqozx-burjA&Q8Txv?;8%g{JH14s_rG6m2hh19^_p^0;la%|Ajl*aqmhs~cdrx(%b zxQ$25GL2F4`qrdHHI%`^V@?%z$ZrhNx%O26^J=`chIl*JO@YM)gFaeciM@y~W`}5B zly;lJTFTehvYBq!5V?E$yMj(9OQS@Bdeya?E^TMq(rN#Ex>rtR%!9T`?t@Y3@uu1qqjE%*c7${p#LhfuXTc&@Q2;QuZrZ{bM9wXkFpDAt?A9GM zK3kGMhPYX9TyX?KDwZtay8L=p3u!aK89HP3$pfYX9(7=U;er&wj{6Pvn@|y+x1iylVsLC z*ZU*a>G{e6?^uR6ps5?=|CRLymn~Ij?OIm{{CSY9?D;P3u9uBGj10>xSNbPc^W()o zjbZU7)ZH(@F4z9`0(q*tDK_7FE~n4wm!JPe7vpdfFv|bR)ik&qOpL33MsqA(_Om+E zdG?Ap-?k)J+>xja{Oy~v3slu@-|LSrYwHqOPc9$SSanllp4NS>GNMkvtXa=W9~lh zFlIY_Z=@@maxk2wjwSB6B-n$+=MFz=Pp|oyo#Z!3t!o&`7nyGE$J#yhzqsGbeSzo_?OVlHD z&1`;52$Aiiv6Q1(bkj0Rr>;avmeCSpGR@S0YwYeN&r1&yF_IoYHjzORZ7;_0O<7V0 z`!Fwz&Y_($-0&}d>5}|BGe7M(Rk;-_+n@=_Psxa3V;OPe?J{sX=(}PIQKY;~u0t|K z$Om5Ag6{Lw(pcn|%bpi)DTU9%==r`ITs%M_c;v9m)o9u7lSz^M1S?4v&bB;bM{{MW z^#Tn+15>>C@=GBlmTLOKM5ultw+DtI#TFa|63soae&z{M8Inc?-La}e9`KFf87b>8 z=W5Q>;q*jm>KTF#cqvH*Nx?4(odQ~+1+>Yj_CytxLQVc%xniRqB=)MU^EcT6yxyi) zBRnLzMb)L!4F6DrZL>YV$!`oQoNjOKax&e(UJwbOqlE_t3t+VC`Bimt4lH-Xd}6qo z#wDNP(5`%1UOEYuIqAe*i@E&l?GleN^fUmD^-kU3;69_fGWqM`P`b7FVFOm+4`a$; zvCWunDcIDpdX{M|7Rq~*uv7d7Y(jpJV;P+|dbFopi7ed@o~bKfwi&w*Y*cVJTU&W1 z{uV4&A!yR2fK9ru!b$+_Ei3RZ`!x5&A~MfxU1$?1=4CaT#5gxVbaPRgr%7RGb*c+m zFt@D&@G>Eg6AdIJ`fMTvl@Sk92&Gr;?niv_c6p-J<#uigR2ow@irSmuM66flgO5BG zFK2!&%+2IRLY14Ue>OmQ@d|3R*Ox>)YYhqZrGuuF7-285lNT zM54!@8koy_+M?#U>`-?){uyKc*eDuORemBHc_u3kZXHm4O^x4hF0-hKVU>DCgL;-PQ=Gv zz|ABHZHkfN?npZi-SDdGP1$`CfN;HDQ<+}8M@*51?5e@-zqyXu@po6L7dFN& zi`++qZ)SbJHOIn9k`E<8FLwKFhZHKc%t%;E_9H~x-!$<_%_gk7j+i>-2)am{NjK~M zDctH*ZqVm zF)mP1CjXSa+o%_xI%Zb7H<%PZEh0`xIa&w$d2MK+z)`)`#oz!1J*n=b`W^&CeEp1+ zl>@$!JUIrP00E>r2qz?} zkmwS~vx z*Pp4ozNoq|;T3Qicp^QqQ$9nLV|x36^yptb6AM?GpYYC>pj08X7A1gRh_dG_`@q{~ zPs{SR1NNe$C@bHz{O7&f>;AP?x>oo6wz`!2r;6aV7TMF?D_#*}Evgyy$ zg%*s=Zda9^Fcff7kthTyN-Nvdx-sEREw9s4H%HGA#{2BsNd~i7DWrEISS>A)-R-fesQmRz1o$2!J-CHTG$_*?hWCa z$38>?**#kc0elhF@ZV{-sNA>Da2^P>66Hh6qrjtw`}|^@yFC8Qlo4;-SXfF@`;Z8w z%6Fo8Vi$?8G|LHle_8pM{1?2W$ma`z)|gwuc*NCco4P2R5^YH=*=Nll*>qjuoGmuC zL#g2h1e4R=?G}5q_^5Wfpvm)Y#zdb-i?`R-Z*q;p-?7aV*M>WNjR8SItR8tioD_%_ zKL4Ish#HkQ$a#5 zIid*$o--r+#SiGZH>*Q}pf!{4Gu6uPzN7`LjPDoK=DSp^*poGvxj!H5x^{%*ODcOy zQ%fr^+<%lFU!P~)wr?5^srcb^$Gb7PhEJE9_tA_&3|OP4l}KTxx?nsga*$VNQ2VwR zrPFNBVE*G(uJtYblsjg^DnXY?3Og54cdakG^yk$Y^xxXYCuJq!RTv#_&vJ_qK~ic+ zl$SNl06Fa$ySg1X)!K8kuscnrLeya;udnKn?Q$f0z14?7f#*MG_e#6YJ6oW)4Qwlp zeK_4EijO|$jFo8!>E0PejMW>^3tSR^VaRTYkcJ?=G}XK72}q?5wGe!*^JOc7gggxS z*uLrv6K`4`W8Ix&tXH_(`=nVl()GM{BCg$2H-*UF4I=!g}fT51Mr|>`S()om$VU z^h&DxwBQ>IC^tkgYr!Rk*}Jws3N@pN?wDR^2iV@N)BC2bNt~EIJ539G4jlVaiMCs9 zN{PN-lmf4Atr@fI>5|`bh&k8xNFD!v?{OtB4u=C@l`_cx{pEGohn%>h^hKEtEt$7R zu?YO8<23x%Z%9qIcD(gLWJGl4W4Z(Jfak<{lcNGXnWvgY1-%NQn?A>!s+W^1@dYNs z(~@~g^p~d`8CZ#;oUqV@TlPgBM?6S%+-rdg>z9s?!XDg9x&;xF^)Nqm%IU@m+(?_= zH)!=MLt_Z@(O8v&UEQN`blS92svU!k_S@~~!`uID_j$R{D&uu!!pT;B9i(}Mv_sWk0-m-Y5NGRk&AeIIk}PqQgKc%3wQV)A=)5`QNjDp0L>}X- zcs4m)4E>6zYc4Y~5IcNj&)PYj0M0`W{1-3gs7CI+a579BEVE$9TwdenYLgAQpBJpcBU4E~%$|y#Wk%F_&NN_?g<8bWP{~tJ)i2ri#so{m%6$_}OFSfw%v`<~l)s}n z;B@b6AnO)yc;vZJp<6e+S;?_iW%7A?OE)ZEoslZvK&*lXF2W$n_GYcEXyeV`O7lWX z|KZE}uK?c!RZC4iD!Owi{*9Gc*M0Il@68tjr`4O%Z7J|X6)vC-3583{mrkoiD(c%L z@+#=NF&0oGHxyNXw^;1QOdEsLTM2jYiM?^Yw016!-U76z&-&gqG%(M^A^K<~^3ZX?udKiRp?dCcZG15g#|L#yAB7L{9+ZlL_-Sp?ZtHzHpR3<**0|7&t9Tmc zQt8wDO4H@YuupT34RFaKFx|(4H;Q*18?+pgdzS7vls$N{TfVh(ZBXUO<0NMt4aVn& zf1W4#jV~Ql9A|AqGB2s!>A^p07?rkP(ehr9-vc&MtjKp!=}N^ambGq?&}YU73X<{_ z!oZ2|pq~7F%73dmK={RTu4hRa>ZyW*#;7cxfh4Hkjn%WmTT91HZ7892yv!ocn2QhI zzF+UYQ<7hz;)b%noM0yO!6RcwxLH1Wue8m)F}70Dq-1h_vl*#W^2YG~4H+3SYw+@A z9uMWzp9{n)6w^x9sB65WSoa8eP0XxP<9*ISlT+EPebYZCT~<%j(t2T%h5=P=YT-^TmCpYQp8em~#i-9O-PGvlsnU)OoAbDe9A z1r_s9G9gTe#cZo3Od^&iY~L7*lruF9Crey}f1 zD8Cj`*WFBh7SBrD>nJEhe4&7{cfZM9UDgqPD+rxuT`sw6K-nqb#3z3#?*f-%xtI7mBRg=AMpHK57U z_z6o%ZYn1TIpktD?AvdUcCGyK=i?d#v4Sc?M;=f8wPAC~H(E2_E*?c4$DU2wdJfAm zRmVhcK&MOt{=}PZ{kCazv267rItGNolvs08{v$4;kO8`1_L!d!t=!Lywjo8+d5Sw2S9qc5R@P zEO2D-YVj+9UkBY48THi%0gz02+v^M_i%%mJT0?bVHrf;09Ofx$GCgr^86)}j>`+l1 zcO&k;Gd;#JpQUVrmQQ)!N%xw;zPCmWVUS^A_AK-Z53-cvx`!`T#)X;UUBT!!3-20< z6iv6Uu*io_I>CRsD-{+>{1@~<|-LVeAvRLex$CUoQk8kQ{ zlb9mj@G|F_RbPgfiGr42Uf#{;d%!N|mOs#gf44ZahQ8lELbB4WKw-3-^@b5&3JaHk zQ_?LVABZXV^;v|kPM+}3@7>rn-(NnCpdZXJE(%Lj^{aZDCKrRxOH|(O^*M;BsXa2m zfL;@xr665nAJJlSO)Wp*`D$GRWL9)fnTx%?dEA3KhY$p$eIYlekp!=EZMZb#JlXT# zJB-f-Gks6v@uSeMKMoJAA1X$Ob%&XK5#;W9zc$k`lMh#(E4h92jZN=qDi`Fhg<|nS<<3r20>jQZyBx&me0Bv5f zD!1tm{OKG*sDLce8ejHG-=x=_)wFa?+O@yg>6#QUbKbQ7?y5%ByW7>9Rkq4vRE5R; zk-c;25TZp`lz9iz8FGYNiXlLZ%9(!}%T0<%e|%7gP1TSo31wlo2)UC>1C22|e zVSkcx!{)MJ+g;3YMW;IRW3$N*nUR-St+VJl5Jx`+t@%l^`qtoZm0CoL+n%~%FL6s-X=hFmjngV520`Ff+;!Sp#9^yWx-=nIqn5m%u zVmfA>cslf39NB-2$F!zT?MX(3`d+85yM1y~I0y>$+xWgrT*v$d?EJ|Ew0_tHX76J4 zh<)Fuwtj1#+djRs3crKep5S%RA~`4L}Ei7U#A0EogmXx9QKoM5f8T zL9KhWep0DR&q24RC4zz%ve#D0bndn*NQ~cup$<}1kj`zBPz_kj>_s>En*tJ(p-FR?j@BsWr{gdB(q5OD-PjN+uGhJr7bz!;@3r0)S=@0LK?f4| zJyctqjJs->r}vW>#IuAi+{@F8rsj(jZ80dt(0#DTH4;Ppn(Fw13|wC9wUX_L#~Umj_qp=~=z+ zGJA_un#gEah3-pJh=pp3h@KW+!UV!uNXEgT#=TRRqkcbiCu~QR?M(vp6EU{0cYeD# zIXg=heCo#4&(|AWFJiCs8s(6?39z1SdS2(S3|Yz&1j#S5s8tLbX(9yK)fp@5z4CXd zt=CFqlM!#*GoJ?Zgar8WK3}L2cOyT;yEK{BW&FLo+hAXke5#5TS(0AKKItpV0M{KIx#_HW9{HyHvsXNed>HueDx{PS;k#Rr zZ^d1XJ7{QCif)^oC%>ld>7~7VDcX>XmbgJ>(rH-j8v~{%7_&6akg=b1Vus8RbJoyCD){yRuJ(-LA&*q*SWiGbvj85 zV(YKRwlzT5vE*~8G$9uT;GEY$Ti?9vjyiXc)H_nVqDDixg<*+1P)N=#A=1+);v5AOx)ZEF z7$K zyYl_|N7CmuR_+^zarU{w%xkTXDi+D5;qc*g0vu}@-j5jQd4&ZaNus0mbkp^+) zk!9I7Bjaq>mr2;4Hv4O71&onbsf@u^`iGC>2EHoWp$79%F~Og<`S?rTB8Gi_ zMc9|@GAPQ+SV=2GM4Ji$iMTn@r{c}YoY0hl#cTJvev2>!DANpR*J;zmbH`L=#xrCg(v;!;RXO3I9o`B^yQjIKDb0E6WV&xU3)D69N# z(J>@J<1=EHn!4CuZtYhU+NW-oVC*wYmlCe6WTdbilipbugmS#1{Xcj|?()!4 ztqAa5{XeN{ZkK?%RLwH0YZq78f~B3^{|K z@!wqpz8KHK|9Lj|93>Gn>!+R%$G{E7_;0k{uo@Z~IbY3?2>UsNR_+a4GdFm{`TXlo z^hK_^x?Yl1y!>gITyd2V@TtYP-7hxdR%LCa>U=4rx!I>Uv?}0@pA{=Z%@ni$-PNgL z5%%#uoI+tAlPPQ8&D~jRy7a-;5(^mexh7vQFY*5#S}l&nsP;K}Qu(>d!VZ;)8YAeP zSg+t4|L*K~jRzJst@2l#c8Tq!F6Z4p%3Zer4f&PF5Q~*+GZ!GCcqjBD!ICXNc`c|f zO;Ci<$zgeM#Io1*gIy{b=Rh76En8bdw7hK6`a*R&vDG|Uw2PLM)m5pHM|rseqYhWQ z*-U}0hckT25Bf&q=38GX@5=ehiCsxs!JJy-=ILXnl|DgMUFhdpEtYTWT94@I>2vt} zJWVR9tC{PLMA2RxzTxDKjAGi1ptd1!c{-`X@Zx);6DIq?l1-M#ZXBH?_)!teu~ltg zP_<6Vzf`wfF*r1y22eD9xZ$GOIC%eF|Hhw8l9%&*+Su^`N1*HWgFODK%9#^Pm4C*< zfOM)X0xP(iW}xIw9ME*Px{u5ypQk8nkz@>epI-Boa_!{eh>%;4!We z_0wD3tY%ky%9rH0g6g!Mo==UTBqQE5G8?Qy4>MKm)ilcAv&BW02YlAln)SV)aUAcM zjxLVz8KPqGi`a7|VN{G7wXXrTZD2Eu^1AUmFPTTSe`L9U-_Z|m(AouZ%|4&*AVXrv z@qrsZ6q`b%tZ=@;zQWsKq6zhqTwv??QaX}I%U&`4qg$0zkJX2v6e1u43|NHJ+q5K9 zbN9T@b285S zy$DNlr6i_fyK~KItqzxAlFRL&`OMI@3M=z?Lz-0?>#!|%4s1z8`ir%4)$R?|M*5sC zD`<6=)n=j5l7B*gWXf?H!(?9ox&bB?vl_M|X8!nXM_|lf^yAbHdbM2PRbqZF$NOJl za{0*f9>-$A8vIRFX!ogh;IV;E}!y5}| zB3^Rzr4;nn)`BK7ex$1S7C#n6X_*uFT#YHm*y8_Kl$UtN`WQ}CK$xgQ8dHSsc0EAMTjaM*uA19VYM znqq|JF2AvBDDmpd*{%>bSl!YLYW{H-5EO*$ewg2YTlTW=wFU(M>4a?Km^3a`z;o^L z`NAF_&!864qwXSpVlUIj5rqTciI}p~vC1;F_bALa9lr;W756bEdpq4YeV2V(oPA>j zM$K1GkdFP115XF zpWCVkM|MN$c#~E@I_)z5A;0cjfV5l4%26{zTOBkKl8^=~=rSPg=Xw8uHiG0ud!S~* zZ?})IISR^JQ+n?j#>d(z$ZikM35Y?N@{=r#TD>TruNy#2nQ97wiH;C&q&q4nc!GhQ zN=RKm+Ps7mtl@r=oFKZ3qNxa^^cN_RTC|J(UMQQ+^4@D80NyRHgvxwBw>A zAQ=B-vGD1sTgNzHTCQ2_dGSk+P$`Kqjq>P-Vy5+&5$mN$w8XVb$!xXpm<)G$yz~!;n+Rb3|GggbSE!lQ;)`@*#zEmgpBvQ+W zL_^Xw8u*dg&7*JhZ>CKaV_W!As}6hAc*``2iR4p}>a5RJLz{&@(Z7qeDpZT3Gb3H_ zbTb)D=h1$$;B`JT{ld(q~}$Nf(dvSMaI*RO|(xijBQzsDxV_ zp95Er^o{BD)owrIS23X>leXtYk2<%q-%)B$`|REE=F6qY@fuyTeg4T(JRS;zqCF?b z60X)zo(E{%x&X3J$T zHBz~b4>KtHPuVP}1qZHO_v?gQ14g5HnfTr){tgZf96gZfru3t5eEOe&ru^i-WbZo& zbi#U0z7=$_(P-xVoR^NAz`Dks0FMntYB|V^i_C~J>W9heg!xxIiEHt7k!Z*33hwp`3h#{&+gOs!QtMuOeBSore`i0!^Sfu=~rWjbWy{o7rkioxUOU;tLqHVQb&Ew z`sJp>cF#=|unt>ZaPsoR{s=An!i#XYQ$fUoc?xHD?FMTvKh5cEG?6i@4JSsdDT)T0 z?Um!$fX%{8V5Ay{9v@4okZ!Bv4{sb}P#vuGoy+n501kVwcirs;Q8?@R>Tak`+m;s$ zO2a1FUe+mBqK;vU=VctJ$Ca-==+V^BWIdhbFw?7&Rb`8i|MjEhZQ>_sqzq$VNjE?* z7*H#dIOS+u>eJu(@R5iFkYgK3T169L73fc84K%we_hZmHuU6jE=CQe1M15y1K8@P- zu>MjzeAm6&S$Wo8BmL_(WOrd$wu) z>_^$_g;goucDw-+H}8D!#L+DmK`V#Jv3s@iv5wE|)s>U@wA9Ik-LY=5vc!RgMa_|| zjPTKM#T0TXiIsYt`w4I9dqX`Z#3;Ajj5`isJ|<3Tuh)^WG}-rO@uX%6@OcCK%OqFK z7cjvAo}LvkLq{nGZ*J3Z@S*{WUMo_TD5%?lRrA~C^@sNx-VgD#Kkxs9bH%^YnVH|z z*+&uD))iN>m<2Qti{ux9SuRK~>8jamhAl2M@(DN9!nrd zI$i?({AG=f+xv#^#vP%eB^gnO2{!-zN12$@fgY^MxM|-i@}^!Y#I?j}e+VgmIx|bG zeq4(krRZW5oBpJY9EeGDH9elql~aaObL)FzMMed?xoUk;XJyRE4hqDreIi7NWFnQ{p^}U!d_NtHSN3>abOjM|wG9yy|StAwOmvbb>drm;`S)y~*(w zK@8ACbr-F8KGFUD9LK>OjbUl2V>jnaJjuKVK0MnViuyh~hD1TZG1;@P*IOqw?%l>b zahGnK7BzuFC7a~R(UYa`$d&%IQr=KpYeG7DP2`)MVZB6LA)++cq~t3qc|&kLR9`AK z0;Tp(3B6IC?DVpLcs!!taYj49otOPEhDvbM9{OGi)(S< z71~G$hs^V1htoy6S5?Iuzi{3_-t=i1ZVhSs|azP|Hk z+m7Wer+ z3~2esJUzVvsRB{^{e&MM^^FH707{rXKoCH3C<>4Hd}2~_yyA>O$v=J~nq+|yMLdJ4 z$AxUXNjL`li2!J{2IiTO&d+gS{``EL3jfYFXm*N3GVuXkCqUsmB{dZ+iXMGP^KK7z zb!fC+H7fmgU5GOS4uYV)4k5(F9bJw{yp#gP@aUv*HDU(*S?D4dqIY<;-go-&QR>{4 zhZ91u@O1#mDu~894S@HuQYh3`bCH8esWHB5V*mN?gWTn1_fhlQp{HT;h&fa8T3BvuLkmB%H^&U7^mmxY||1Pfca!yY=HNt?jBBcX^l0n~!Q zgB8McLBEuyTnS_aG9c{+2rEvRnvB|YzO z0~##8i+bQC(o9?aC35svm{u_;f<1xDh ztGm&s<#XTwubG;4loV@77;ZmO{NP<`UpF$n;>|BGNG!BOLpaI+^ z`B$1{{*cORmvZ~@YsKk_OM7Epv5}v00bd!0jj7b0*ydNthqX`M#%4|U(^t#mfIAdZ z8i+iH0$u&PZtf9a+r+T2DE!C3`&>jR=AUhGYaCX(D3`|REKnFt2@a{>pHqoOFYljr zF#R(S?BsNX@i6#K2>)$=1z@DRm=Z0-4V&s~(|NC=0R7&K5lvrq~I;@fgNi5tgWW4^~GYG-yIu-ET6B;c| zyl=YQ5#jBr2U!P}R{YWwh2_DZtM90rcOg(XLhE6Wkc2)ALoo_5znBV>4AoWzLBL*| zVAC$r{3giEYN;5j&G$Nj#3eb~brZ$&dapKZ>1dJ+>c9Gf_v-SHtVcOD(6^hJ#^B43 zommjAs5O5cpTlA_u;di)lGPmq@sib*OalqJc=|iPi5ftftOMwWm^iTX>!BjRepGPy9oJ20vzLzo~~=I_Jlpl#eCS&a|U7JT!x1m?>zI15x6UO z3<}wqmV*W%fFpID>5^ezstEcIi{Hf|{pS;Ukxn-U(i5fn;v!~wrNv5W%)Qr(dT(D!vE z4n-^0WS=(cZ{_cvkCwZc^B(@PK98eymYAq8B7{uYi)V@FspZ%`Pf1Vx0)z-z+w3N0 z$6w6laKzZCWul7P7}dd^;xn}OKItqpV;X}IA?E(}AUS4KxPInvseBqCroBJwc>=RU zMppmb8G1RASkmrZkm~j}SGxf91WDCEz2lPU{uHa{<$>Pk@!6S~Y=uN{7#TZ-Kg3Cs zPN`j2SExsL8O1y?LLjg>9XmoFjG-QHCzowY!SHe9K&=F9+L@DH@jT|Ja zlKDl;PLU8Nv%UD1-W(%x2Ygd$)6ErzL-izAic_{tcvkDJZnHieZLNF|kjEDPNiaid z&U5gv4mfBL=Kk1xxKCPrAtJk0GB&e*Y%9#m>^~0<_~Q0=lf!^4|AmN>+~e z^9%c4XhOeempX~^!snEQ;sK4F!)oDhu-ro9HV5f6q|o03Cs=+JUU)z`cRx}}f#H9gC&or06wCx z>WP(D3&X8VZv?!wB!PbWiJEIgP3iHvMa_f)f3GWDnDVN47elUR;~W#YW>?nT9f~u# zEi;tmab6`rvBkv`@zz{?dbdT3JL*XHI9u}-o$^_=zADpje-cx!F{QvKb>z=b8!dIh zHB_uD^{#fCb9n*X93^J}Lco~!co_sxPx0u&ir}K2;6ksn3*@z)s`mnNPoFQDtj|X3 zJc|Kt>Dpm4_LUa7D5zJ*(&LVaEr!k04aWOj6drIU$lli2xLUTz?R$NBdl*%V7uk>D7nUz{YRQ2c zEf((aGA!)Qd3#AxDXW@TCA0Nyn&#_~TxTP|F;^nm$GT|Wqw>2wC$z=tT7S~SY*xJq zhPPv{&x?IqU(vbJX5_Rv$BIEIG&z3;YS?$6rB%wdrM8;Ad)?sfp0!G)6#&FNe15m( z`;Hvyzry^ZpsFVKaS=afs#t2b2R!rJE^==9WQPt?aoEdw&o+k&C3=8tCk`l+FEk@` zmCu1v_95)uC!F|;=kO=k6r$2j3k`1A6~>|O5RL}e{=d4moA~&|Y&urH^Ez_67QTFE zgqA`7y509GqMD42cuB17f}l4k<5zm9qqE&_d0}DLvz(68aoO)P&66kh-RrkAt?zDq zU`zJj7wR#Ku#cpyDn0I^HhZys$S#f0%Re5^2cORKuO1eSpwmnr>3(rsUYOWdiNVrs zbbCEyB$7w*qC7*|Dz)u6pU7!X^tQdJ$?R?@Z^jLZ#U|?irAjEq>X!UwuotEKssw#9 zSqGS=iyy`l8qn*|TQl2VWzqY1(n7*hy+Ydp8r(0oIyeuT0vKdfS4GOwzDW9u+Y1RSZKj!eCdxC>I+8(MLg@=1Bd4mObO><&V z2!^|tk(QW6CRJz*&vIF+4v%GJ^Kieh*pirRv6^COS_Sgajvm%#4qsE14}apcmCZ@G zLr7n+JCH+L-Vf4GYFZ~L?M~j7%y9vBnqL5&a`VoK#uPsPVl?{jFvf#;`uyNlcN#vm z&a1uJg&i+z7)puyUYhTe&LbI)QIY-h$5F)MFPPF&Qi?50UPVz3lYabI=y`KcV8hoW zv&r=eEjClMzH8Ooa`Ht{n=d>;cIeUk*WeabgH9~;NGqGvqG98n-_^;cHZ~Dwb<(wQ zMlctTt1G?l%}#_so+*7%tcF8+Nsb7Tv=m+M6O`3_ZT+0NUykwH_>(I0kRec!$bv|v z<(xnC?xurGb64XrJ+6{!gR{6)6-RIXe1+3~-^=^~{2%S;o7`6O5sh=+3#WUtG!r(H zglf4mf%ec4j_J&oqAguZ(Ehmg56D45&2^ch22+sXx@LA0Qz@gxJ5?T)=SJuETRAS6KnSxk=yPFE|H7!BsPkoWePz`T zsqTZ_+L04fo3wQ6Ea)@tjqMV%j6WeT?ya(4yDmDa4R6^F7JLYLRg6`qbq{SU;zevx zf>n!s#uStjoI+Tt= zhn1X^&w;*tu_+R;{wzita+dU23BL6B8R0gsxqMn-+%6eTeLYg5OanbvZP)UE24@59 zqGr1XRl4Wcu?`rmDP-SDXI)*SKC!G_95jTTE*1h{8?_SOX71}qi zuO;p`_`ZMPeL)$nmmpj0=jQ}vRJUM_SeEvu{C)jx*$l9dEq=LjGu}Av%9%UcATJ!hR}pJaL4~?l!){nZVlr|vBVYWn z)onMVTrXt%Npc9&SqnPlXz)P&RTUGxEIzf^)c+Rh;&ZyET&gEPl5ra)l~rCA|H_!0 zT*Ql_{z&*OPWZ|C(LUxbPzeNBrmsMmc5}nB{Z4K`goO*#%){;yU-=snj{T;D z9yViY#(G>HSG~Q(wo@9eWCzL`U_mvt0tu4ImSUhnNBVV^R=l|!t_B$e&F%l%nQbg1 z)u~Yx{V;JKX58kDk465b{Qe|)uLDN;a->1)1tAunttMGrf&VfHNVgcRHnu`}{MvT3i$2*A6`fT_+Cu@_3 zU3upvfS{MG`e1#3I~h?ha@|hvbag>e?jQ!?zNCCp!o;UQG*}V5IM_A*aj|v#> z{**aHX7671UvguoHwQ-Bui=QzuEzo=16CWjG=K6*=0or!Qe1L)+Q=)-_s=um~m^6ebT`*Wj7{1P5$h8zMUY? zsngY+jj$ILS>~fRf+?+^n6NSzB1c9>>$2x6R(b8?1>BWd?k|wp#r%7+qi;Ds?Nbei z;?$)FDP{2$T)J2mweU&<`GH*r8X4q_USY7b&8Zx!#Gr122$TOA(d!98iC~y1UUcTga zT$YUt;nn*5>1d1>5bITgdhPC95dvPz-QRzA)wI8$Fgx5bO5t>PC4;pS(HJ=mW@4jK z*7?(a-AG8>f1Pw%IeD%`%KM1(y_78A zja-v`gGV$(T7+yxS?P64afq0g-uY1&3ZP^1x z#@BK=A*(;+{ay{=303Z+1W@EPpOLOas_j-ldOYfqMpFUpf;0N0!cG>Z}|M8K?$~j+T7lco}=RFk#bi z3aIK{HHAQr&$k8wq`76*_M(LvZdaTenzR8p@&Q5k{AZS^cQc{c*>%{Pe7PQ1=iQ;& z!a|z{C5A~MHyce=s^kk+Mzd9be1EEmF4AVp&w02kRQy?$ zi6nnABQ!^k;-@fRfxV`P$AIs09GgkewHkMVK;8;Y?JK8VFi~j zU$FUwbkaLZOdhR7D1*o_IRuvb(iA&n_e|59_L(XlpD53lP20} zL6h$slGm@qh1`L9phj0gni3P@1Lz{(WYut%yJWZnt*+Y%fVsK^yx2jga`=7S=-XOZ z(LgCo#+_A(%h#DvTZ!OLvIeqxVt=CQ{?}o34f~h)wJUN@egObAb*T&Nz*h5Ke%1RP&B@^0<2dKNv{KDBg0%bTm!PlTu`OS`08F`6jJi-`;TZ6J?TYNqy*Yg= z=Iu^q#87{0sLF(|n(%glg2w5|Z|;e*90OyZYaUWtfAHoryMASzSMOtA_q*IWhSD*U zE^qZocI7?Af`U7LtXKf^7;TR-QKqLx3t9*pgW>NaE~Na?(uK+T_0}oF?XY+v8XMdD zq5CM|cML$quQRl7Zt%i}&|XU{VC+NI!p2wv_-7%eO|fJ0Z7GUU7Cj+T5^Iiw)jkBR z9dT8jmiHBS8S>&7g#l3a+>xA8nQbq9aj_8=Mnv8+8qmqJXG!;7YH?VO^$SBr6$632h#?9vzngwN~&n9vATx=G_mDJr6JcbvlYn zP}Gl?iq=$16|>3gSz=V)7>XZ;G@k8NZ+FajCB(6UI43Wxtm5}Nw&&K5Aju7gIjpRV zjLP#duL(9)V$NJCX)6T+F-|)?dM!}9?4-nS&?#QWeV34~o<0qao}QGn1nV7VbiOUu z8;vzja4ttFUoPzA)P*%gG237C24)jky-&8cdOqMpM(!2XGuPwRV%!0D(yjDT#g8hMgt;Ug>mim7EPosdBDgGPy3vWafJ%9;H zJA`>+qPCuqVD&_r2Q#V-OeoX%2{7jWQB9*L(`=(ne^JoBbpE13t<;Hvpf4F|G*|jd zYDxLo*2?HO_-mcoA`{qqq+_+3G!y73m?%-B05U8Mq2IgJ!+$Z->kWzFjW`s9MWh11?BlM5ko$@T)RPR-}Bz3<;?1HuWI? z8-Fdo_TL<*L-&E;@}#UR_*~O?fqc%*!F-LMn2i=|BoOU`9XL9&4Nbe&aa-CZsmvkSDYmM9d^R>vAZ%J zZm`GBl^&F3`pd93#oZfr8?SJ@Vi)%O@R^#D1juSQes^zTl8rT@B}(M?6+SCz;AE{eu6t3kPG*9FVwBxhpXTg|xg*Fdew0*)eW=#zh+u z$#YsZ>aj?{%Vz(?_Jc|qj#)5|+Dz@R6`>8i0?rFWZ85qnL>H_e?_YR>nSp`rf&GnD zi?}^P)M_LFjjQB|u!~hB8Y=X0A3QWRp3}%?q1jgou6j7*GBWSWItT6SUKip3-4OHK zR-pRVqtr6xO|P65&tG!=olGKu?_j{?}K~$naE8Wf2J&_#Yu+SDd zH`r8sK2xb}5oGbA!ceE9{NnXY$uA70Hq79!8iH0cW zV-z+O%x;g6oZOtdTbX6!xy~z^Mg8_BOXzN}(!+o*s*+{OJXE;dnd@|0UP`SgVXkZ} z_-60?50g8K*sx;75bLN<-_yzZ4+F%boMxVmye&SrALqR3&5pj-GVx5<0(41lEOJOW z_i1zb=C>8~A^Ac2j7sNOSIr7dQuEpspVL3eVG!iC*8w9yNcetX99kQBi-z?!&h{tnM=N+m~w%uv=SI zlHa@zkSMQ?yUGFE3)hex;kIH0qR2&pqfZKVTUy(%xK^Sk_~*gfTWe8$`lc^tIQvukdJhBV zAH$A|()=*r6_|P-XPL26qS%Al-t2im*PeD z6geW{MiKD8Z)xmHQ1YB}`1qdW4&DA_QJA+n!`cFAzhK!}~pz z6s%97`*U%tTXSvc#MhBMDd%M0;E4P6(424sFIE%HQ5|2D$%+PT1Ttt(lnfW%{Lt3- zcN3?9u}Pk2X&};K6Uf4Qw&d?wyKE6A_h>RulOWY%;&16~qRfz%G8*F5>@5DTNP=Rb zjx%X#vf?YuXO7tjW;A2&+%_HB<{jK1c=$&t$_W3LeAv5We4n9L3t3h&3j#2XwWbpF z0;W2L#el(depG>s=;-J)zI-KR$)zYeCqLJ#jcuorB=mmY5Me+Rzjqg1XQXzS@mCBX zJ`Jj?)^rX4oPpQ${MnGuQG-FsMK}EIje0x0f_IQ>jH^2#SkJ&M(7E?`lUssGzz+)+ z3EJ*%U%fXX>oMeR|2loozUh`9_64NZE4I3;Pe*-|3{=Gb)`@dp#e*M}NT5|H!FMc& zY1FAxd_mzO)cxnLljM1PPp$$+X!|c-7rL8VCZJ1bDYYL#Wu{}+lU3UQYgbq!XCzvK zuXOQOiyPzm;F{oYRYH-ILWlL9$QNtigI_q<|6u_?O_+jAo?Y2XRLw5`1T<3#MTF{3 zcnxog71w360zuK0?yPs6E^J?p^W*&hX2J#kKec+PjX<7yX{q~2(r&})P+iZ1%1%Jb zP1GypBi7<)Rf9|wd20Rjyx!?YkY|As;HVF&qI5ukR;8Ri$HQOAwf}-HCh3P?e6|3A z4neQSrx!FysD>FzI0~W4S|~t~?JSH;XP&b6pD&|Ma&2>w{R>xMkr|71Cgx5EQ; zRCEBziYXy8{k{8-tRL-P0AXvih4;kMHMY9VME9F64hPqm*td=cZ8*4UI}hhfAS2>^ zhCy*eA(t9(c!G}$eV# zVF3~)sVOvy`T3srU7}LrIZp%C1sPYfS;mWs`kjIKU=l>S?z11Yd3WGnNH|IT(3HwXhTftd4H^q(9h`tWK!R}C{o4aUPz z*aR3Y@o;b$4}Yj^#J8XG^;BqRTGhFutgfrsje?!c{vvO(_2JrPx7&t7TX1i83|FpQ z^Q+(0I(yJ%ay*5Vv$I4I0MmNrI`0gBod#MgN>MkR)56~ZY-4CZwqc z6amUz$xuRI^-`Q&?~z}q^Zl3>#@;w`SMNJ%083Y^GJNegJ^++c6AFi6F8BDi{M5z^ z0?)wV<69k*gUWD*sIag;-JDaOulN4b4k8zqqDD6UQ~>_wu|8!KMJo0ZC?}%3C@U#w zrQc<})(EMQ8C+Z2E7V83I_o9@F_-jwHSJpn^XCfOi#0(P-WC^aH}gV(Hfu>K;3c9T|;6^8S;_tN3*c~9-A&kCb2!og7X?4L>V?@!~0ndD5C ze1AqRRk#EV$zG92IydNawAk2pgZ4me6u?U`-OdaoUZ`jO@j)px!a@;jLH_2G zLiDo739+}kL*SF^PgFWFEIX40tnRi{IVxE%+pWH=V0(IcW*ZMO3AlKYQA@vP9{qoh zOW^uIQMs#f7{{8hoqFtXEb{AHD*9+OLXO3x^*K;*;q@kAKQxAH=ktYQbg9!;cXait zOzazY98r0V(S|txw!?!!8*i;X)|`V_SN8TIaxH9g3~PJ9WB>AHALuUskjk$mC7OV; ze#tbzH-~KFNu$3?vQWxP#^o=s^#%aBRA{&V{l(-MKC%D>c@3ki@imaMT-<8-@I z)r4qH?N|WSb1G0Kd5W;hV^Kf%U%>FF0z#&Z{tTmN_7pMxk3$9#FW6014~2Y`(p!lE zy_?h8??WP}kU!l3m$By5Ymx&WAOCMB%|Ay)CKRd!NHag7>GkpST4=%`v(R5ac>i;l z*tn}XJP$QDf#_tD$xu8v3gBR?`H=zy`Mq^O$B5CmEymlVNy_YEXQ5~MY;Ou2P~IA9 zdJ&XrLlSu7`lVLO?tdR8@&8LMb9|ZabznSi+mZB_T?Qwd$JHESV*?t{p_9JFSNCwC zg+&ol8&bia761nF1VG_*MS#Wm9xZw~;R4p|zMoSM+f`?fR`o;NBfWda=5%|B`7j&^ zK7rQ$XDz=-m*V7yc^Kx)_4twZR)+oUv=LM8>;QlXfN@~;z!u7lOJKjj1!m@hz<(cg zfD{wzKRrQ=cMo&I-wpYBI^jRfYG}*<^nmio@>DX{40wm<&wzs@x|7%NbmsjVSw#}{zYD9} zS?vn7Nnc!8z%c~tsiCPl#o(qBVj2l&0;hPv|1jbF-P#v+)bdO}lFknI#=M-zB`;FR z>M4$=k)-2b)_v7JmxOc+^C4sF2RcJw$IG~eibU)ZtxayxX;X`fFO^C8dpd*Baar|w zc$GT&XL|r48!G>n21esjV8r>ZZr|BXmv>xPkDoN_NyWz8K=;i4Z2W#!x2!4Rx!&Vu z*!YR0!+CGx`Ju1yGuJmhK0bzRuDDsEg2W;4t5YNu3Nb$6Oi`~jdkQZQ{D!xosp+PD zrM0H6iOp!w{%UJ59kW72*k6UK8ni6>{f!%%{alUOaRGIOb6yBgmn9)$HIBMQCjy^} z_*`7L+)qMu%nur>t`^sNB11n8rkSn$eB8!F*_GyEISkHb7q~o_4Hl|*L=_nPKFd7{ zvE(Ozcw>n)B?Q+BN5XGy7LO1k*sjc~17a_1tSx|2*#j2yF zB@FjGnOw%nupLTn;Qo}Ht$fiHCAc3;b|@DKqstpZH+XfuZl#zAhX}%f$M3KkaCz9w zo@db;oKn5>|1kDdVNrH{zZNQuD2*VENK2=H(#;G=gGiTvfV9$5(%n5XbV`?ibPh;M zclS_x@x1Tz?eE%0`#$hMF9nBtt@U5O40qiU{zUNqekRL(Nkq>D9aV8LF)_1clE(H# zjJu=%GVnaU3fY z1Cx+>&w1u4eTdWs9?G&L5P#AyM1i z(HuUc8nvHaPS-BiwXPo{G%T9n8i*BBhvd4`E%kx+;5g+0B32#cAApC>67%sloBqk6 zm?Gi>zAh@U+9=@UPlF}VY=Z})Y7tz9-WT`<9iaL)$1M_R0&o$hrj_Aa5rpDhn_x-6 zJYYICk%oW3H-qGtN#=X<5S!HOkNU**WTgenAx0e2RVs`)gK6>Yg#Gg9Av#+pEtfQ% zUeAhx3hV?R23akOWS7gbWAxzMOncjPY6o6++Bd$#m_kx_>|Ez$NM z8@(}B*vvo_P*Lw1fasQ-DZ2b!5xHjR$9?fOF8s5uOU|7H!qE+u5%I>=fwT)Pld*z{ ziWkltwWn)-C~Q)g5$h5ut9t!Urx|ClahsW;;+r?z)9vkOHb6hO{whqh2QltWpPbyFe}TV( zv=CD0^V-<*sMPIx?cBcQ_XulbOVnM0Ma_R#@bk>nrzSW$u(EWR9}!qK2K zpSI38AVm=Lm6a8sv2w-j$&#`vb>t7w04o71!y)DA!&qjBSe9^M zHymc|Msi$AAxMmup3ItNmZT#To6n{DS$tw5YBKC~o)V4Y#%LgTy$uC@%gf6#r0GhM zL~U6Q%rX#4IkIu;he7IvS~Pm~KR=zFJpsF9=P6|^y=s$y2Xt4rVp(R5p;!uwvIwmb zrrfCG(#8&Z&|CaGDw~IgSkMGZF-;(6C2n53+NPyqeMF^F3yMX?^UUpZOJ$MMv_CVI zZV*dhcz1SxQHsNK$329E_wMtln>;`BrzJ+?dLfj&TGjo*M9Mi9+&VQ*nCMUGf5rAC zjqa(?1Q-oRoAcRiBnx=yA;|I+6SALEKB@pQ>2sBi6;`tkB>Y30i-a#qKef0+UowiN z_=dZkJpbkUU9H4xPOt6q5zf|WIc)qA4Z~t}KbkNVr)`)nc(BS^kb7DW^Kp)S=?53> zrTzqLV4zfM%aZyLW;Ib}ROpm)x;BdjN@0eJ>g>;uU@F+#I(KVx3s6%0^4hCf2d`ilu`5EF=IFbLF#OBP}J(qe7~^ZwA-E*=8vq! z_LTLt$s#OCg+IBm!nXTV(JV3VlAJI&P366(oV`vK8Rk=cLmhIt0-kNiD)ZTWyq_$> z_h4joM+53P3^7Z|9pSLnq0!+JASYrI<>>XAKcLZRM2(JLAMdC>iRH*5os|lD_JpMZ zPuU%{6_SGp%aWIwG40%}PGh%kRgW$d!P!@<))0FMMu?#~X8iw%sROTHz$l&>b%v>B z#6vt~)@Wm_hCePZyu%#IQ=)_t@R|)8WXnWJD(DxOaX?wdbugdgU<|!NUl=RaFV>Uu zOB&>*Or(**5xxHo(|V>*yL#+iO1s%)1#F{7DN&q7D?6X+PB0lSg#3@E0g!g=vD*Lqcsk2eDTJIK z1D8VRO$XMx-Pv!$XNWq%tADWo7IiGP?JWpFKGfq9bfie zKNr_-5%-H=RQUknbkPB`@wWD89k~Z|cKH}1Wm@S@TYppvG#l^*D=e8l_y$_I!y&NB zuMW|Kw7kuKsoJow1Z4Rb4?)jq09b7cvu%&yb8ps@lqu||!9S7BazSP>4nu5fiyw#M zsoG8)K(B3VqZw7OsEUtV;^pgNdwYA8^K3kzVvHV7316w=aa)c_4u9+#{mk*9<4wW) zQoD;W79qD2NZr`Tf)ZSdih=qq`#0rNxAgs-#&aWi~EP2abg@{mzTVtOYOl30N~l$DTSnBrX`W0m7qqXb1u6Qa;b z$k$aHf_?(ugX|guE;{XizU$+sPxFt7UV%K!!X!eCzL22C873M=kdEq7=VCUIP0X3A zRN&wKgY0Qmz^G)*0l(eOf&>I1ipI99czfXhZiIh*Q%6#|O}Ul}N{QR@Q35d-kJ_)? zP9dLYsG@y+GSyc5C0R!H4^1m8d&1aJZ^>>0o$Q`N06p72Y%g&?zU@9`g{S9$u>Dft zV^(unWG{1MwLz(3sC&Kv0(0eXNgl@ZGN=3Y7PDsC4kXV1JlFZpUaIA<0$I}j(0tUq zp>}QvX`|T?bz6m89P>VRQ{#LM{cHZo7R`yn%)pg8KN1r#nbpZsg0u6hSw2D4&S?*_}!Y_18MD zhSM@VFTChrD^V5=c>`PX3n=VPrI~lqy0s``NBFYD_{lOJn<7@WLLq`lxA7#K@I}&x zh2JPMonrPPz47B^Gi~bEirZu%{Ft~4f4T&vvlQ4eKFqtD50*IHearEqpkHDGvR~(1dF&zkDH%~Ro~4Ul$crk zVEkw9(f+@44;<2^x=~}BHv99-ekNQx*qG$0lM@>>o%(L{16x(@ab3)@BacQp`DkU~ zfkf_+L8Y`*2!(7+s?cz*93t`8C`eI$o!c};ZKxGRuK*=5EL~{#;J&}Hu>nsN^|~&o za_pbx_qQ8{z#*eDU*mbK1!zl4RW^^cJm?jiWMk&>S=OevCZqr)8#VbC+;c>KD8YuA zxX3v_vV#pfjKAE}Xt|qUH@sw?56KAGp!_s9D-72h1nK(uvP}gEBM3Wu+70Zr zISowu0k^3z>B;k0PkaP~^#{mpH#{3`Ar^4YCe_IJK<7T%|J^FfN@>KT&oE1uf#kKx zaDO?=!D`=kfLG0rZEIV2c~*i`#^B8WTso#f(Eb_4S2GobD{TKza9Xlzc|J3@KWU!z z0Woh+JF4F<3q*xy{l1gjuy+T_bd6PCSjb%Bs^T_kDWZn?p~>+2D3;Mo5bI^x=e85! zxCqX7Le^8g?AGo^ORPMPc}N6kETYrKuP<`~N5v}9h$u`< zmr&9jX=|uc|MdqZ7@qS+6jH#gf)@Cn``Q0cSs*uR((9nWhwI0TrQ5csSM1~Oe+y1E ztiTze^8OiV6T|wh^Y)m8?e0j9Vo-YcCNr&dT6>BW`z=zqEg>3rGp$U&WHlRPW>*}!f;Mt`_HeFO19z7466VkN`6k^?a4|k z1q6@TpfXwr@I^?~pY2C*%bD~hb8B-OGG*h67q?|=BG-m8;TA3Xiwu83U9H(<_IIlM zLX|9f6Z4FmoE*B_8>~8u_TNAIPk$%zvU$rE6^5S`StGdoNchW6|3X^jVd96cl#gZL z7uj0Mb2{);-!}Y{jaQt0%p;p_X+3tIFGGkq+#e0&Ps=ui;_IQN6*ZL%kUnBp=fQt} zGBxk33KPpuMCV6iXY&V@sbG)AaXsAI>g@nbX>i1cm!2l_hJ~iom+1 z(3S2l*r-sxeVehaG-FDW=|u#<9}J#4<~Y#SeA9tc*vh+5&8mS#>iOIU zswSx(hkm2rGLGcftF4Da5%~tHi7#U4HGG(|@6I<-SKJrJ5CC8J*(89^hITvXCI1V$ z$%k)Ht_!jPn&WH+IL|i3ZpL0gO1C)dEo^M&K7qR6XKaz8XS`;&=jPgvcp+mZ5%({KQ?8Epc1s5$ z98^#Re7d};fozhW<{Pu9l_wcKtHDCwob~$DT+o#jPNPkK$&^Lkt8ADfok0C^ zM^D5%o9EK$)$OO{hZ{lt&es?V6GYsaD6hphF)zjcE{!mH_VI~Po3MqZdZS-BxhQ{_ zz0mECtyQp!Ukb1dpbg#dGP>rrbD-JXtSb!ca=7`Klt}ikOcpnr;S8vXT$;T$Rb76ZVCZ zmE6`J54?AnEAK#lHDn}vp?Uske4QEEj;Oo$rHj46pRW{wM$fgOoI!-!uIYv|8)n(U zw-kzpwg$EAGY6qBM-Pk``Z~_#G$QDXKxfq-jES<3z5tKSS1%?2A`-;*fIU!HdOH=8 zWd&C0l^XUa_9ixwQ;G;QSABefwKIYSBu;3zpUzP6i@Wc!g3Z#EbN#d^RDxRX-|nk# zLE0Jhfd;dj9E%wuS8pJhi~Rg>1yZcd1q-e)SIsn=cV|kMi=j?1tVLBKGHnXGXJezN zYp^A8#?ZdWttv>~wdPk;?1w9f3v2N5{%P<;=m9dw;3i|SL?#-qr(#`{U*H2Uyjo1B zxZ&>W$9d+f!=|f#C@H_1kw!HXJS9ap(gcxV8l57QK0kJ})^4B?bCdb+K$>(aa{o ztruUIoW>uyYEEAkY1me^x-e>;fc8l*}pOl2YTt0)TU2WYT z8s>Z$M9@#Uc5v%D9eo)E`=lHXoHeIEQiWbW@U<)Wd}a2lECiOStE&SQ^>3)FlqkNN zwReno3fFiU&^R-RIQ~!G)$O;Za`x+X`@77rbybt5^vnc)cBVJr)DaXCa@&9z{vzL`>%if_H~`V-TkS(Mhi7Hp{s@eA)C}%=0^7=pf_Hs zni^&AsgRH6y;#UH(?$G~T()0nwE~HV6IMV((od&D91%g!mhQ?V!w|6kK7h@K z&kj`&XCfE2qjxG{8GEkD>y#%A!Ud8;K)OREQ^<6^#}AAP&_#kb*f=Bm zFBb3@)vsS4RI4z#m~!>Vdh$p*f*GA!GU)ODe*JDettxkl=ITSaV5<2Wg63Kf)YH*A z=Nl?cQ`tPdxmpKG;QJ+MnAVvnPp`MO8_l27YADt!#Yz=&n_sOMCePOkvr1sk*4JQp zMqZT2r4U0+lB+;$LCkh{+1LDV?=t5(cxOKlQ-C;v6(!1GPl--Lz-ci_C%<;&!lw@m zsNUVW(k*@vh;KqzRhZ$w+#5^cQTI=bT?B|t_z&f!a`tgy6ikbKBJ6fzkW;xJC}gyu|_mem8DbOZ~o zF&w>qN-2s5x-bB_Rpr;QD}%bwtveo^y7&x>qGntYz{K>DyM2eQSpJ)CPzo}B)^IUw z{?a2ouKnCOSu^9{5^3I~I2h>cKBOQ1*IW1J*T1*K+anJgdX%@$*#GtX|NI92Ee#?D z9ES?zB2E}hJ%WJVa$LFR3A#hl=7BZ(_89xmgChIqev(zFRgI=F<<#ldGrot=sdIS* z>IS&$MV$_qU2#c6=W@oIRm|qB?*K;(_P>7>&{R+UNsG*qVgHlsa{qF??1^U#Xlh&p zRmqHM@O)SOELna)kUnf`17Jjn%M=CqY$f6Mr*!}13*LS{0P+aDg*>iHKstb*wWUE< z(D84Ldd>|V^J4hKk<*sQ*WnnlTQc1YnZY~jb(ZfBDtYl1b9+@rOkXJzzFuK%2@?jw zkfl<)O`A4O3K3WMO3eD?=M5hsCsD*0kJZF?e1Z+QohtI=7!gG}3k*D!3d?YA^+o^C z1aH83=i7mkBwcMl%;INno#&xq+d*=2@(`fBxfQFlV~d^le#=0L=d?n}xIScJbh}3~ zHE!4880=)mSj_$Uy+6`WC{ZPMqVGlCp_Jm|&msU@4ohTjE5ZG6;=OD^wj3Xl%Kj8A zG>uM^GM>3_Z49HOH*0(742o$Q1Rk!pTis#T7yf?H=^5nSt&>}K{F<2Eyi?3YmtP_c=E^B(pRXH!0RRJKALZaIBuvj$6a)F6{-Rj&mJ zLuCo#2Vn)Y&%;j*=vq3OAs~U8r<_l;;&};gPezdWFsP0B z*!T*21ENN?5Uq*H;W&*4=v}E(&o)B>K|-)-z5RN|@?U)FTOfhM`aLB&GQUJzmH>{) z`?X*l@B3U9kR83cHe~x?I9n0M(uM`v7u(|vJt9Ca6ak*B^f*FJ+qN?+sVa1Lwn1t| zeqFg-)`eSMd+AS#e2--?6fw+`))5Ju`u}r>;8fazRKSJsw*~tUMvy*mrHAu(PGZH z_9`GO%XF2;f|8*x{zuL$-h2nzHfJzKD!f{S;Z+(3=rO7@QV!=REL&4H3Gf5^e4uA2 zoBp|5Y@jroYeoL;B11*p^3Z6R0fc;Xio}%Y3!Uu?%bSol475Yx3g#~78% z;23nq2@5^r#nO?Cm}6{di`Gd3H{;~*D!n#fdB3X)>J}f*}apqE{FFW zAsO(Ss$%VI@lxi5Vapzcz<5H!KW={?gJbiDeNHgUWvbF9L`>@p(4?TY4+khXgZQ-m z#Dl;9;w<$_3`Wg@bXVQkDqld3yqGS(dF=Yx;x@GnVTWlF=99HZ^lS893*T6&q2ZI~ zV3I%6nr-yygxtv&tttxz&6dy$R$6)Mnfh<8Gx;{yEQ2Z8_r#?J@J6~ONC5nxzS^Is zQ9K9#%MA_s$o~5E?NoO~Qf)iq-`4r#w|>djVmpeRoj+cG?_dxz2bv9K&g&mtU%8PB zx;{X{$D7lRfIM<*Hpfz?b&?4uD31Bt-|$#=r=4kVJ(V@{vXqpP-ulz{yuZKpMJ)i; z*uUfPkSb_Z+pu)UusjL|ce>CzunQ$uHl3G$>Sl55hl26(BeHUWj2DFY7l84pXG3E zCo~xFBdwMzCW7sN#;8pQW$x#zfU*rpOt{8M1!rJJYB>>O09c#ASy%t%9OGr=RJwDu z(;BzIGtMO@7<`wUT!d^TX5Y1|^3DOMdfGTX57vN=WPvn{H~R;UqwMG$bRo|GFTm3q z2ksBI$p=7Zj9B3}CR-Y6+`Plm{8^dGNLnTz&M==6j6k@0Z1xKiB$J**3YMBeGb zLDx*+3W>bzaoWK7?1Y!{-9!lW7)-Nk+zG(mUm{$7J$^F3cW(M=eJ!VE=*B34d&fN(-;5 z$RPxUuv?~4Xa8d*t!nFFFxxCTV{AKK!xkHzwn;%NtvFhO-9kI=XOwY|#=>Oi6raOR zrmLveJoT|2MaShF!;AU-NgA-1eYh1*VjXNdK6#}skEC4-s!VzUSs%$&Z}|hR%n;)l z*lQx?TKoHeXN>vkm{g&Wp*hyOUU_pyFZN6N3HG5Z+B7hd?Mq_*HtEy$7f1W7;3&Y) z4>NhQEcz4p<~ub88a=avNr;q}=x-%sP>!cOy zqn-I4;TXSsq!i&LN>w1D!$Y!EY zlg_ZR=<{s*a_JVKZ$(Op1~Jzd?`Eg@4W0-m7AteuFa5q9S_Dky8vW{BBf+b3&&2c; zBZ@&0LcrTW%x7>%7Hlc8EQ#}=i`9Q#A^=OQ{a`tqONRPreFl@?{-YZ5Ee;OOH`c>t zIl;^Es?bCY3L1Z0jW$uwv#+gw82P!+j&Uf3vYEoOW#mgg?^8!Jspvo{yDEmQvfi_M zQ5>xH1Y;7h8vGfg+Hmx7b;Ry*x!NE|-^VjT5r$j|D507k7-({trW)K>3!ZC2rmdA82&(G}{n#TR|iZfQ{LxSSks zlg}=kQAM0qF?*Ah$|m{eh6nY)>0RC3;ri0ckgiW8b1*fjw&N$nHzKCDWAruGEwU!| z@xupiAQYr_;UrsPQ717*aErTci*5tK{B~ao52>7n_1hJpoS~wrI~CSLc(Jh@5Qn7U z0e!4ytj5!*e{{)T;H@)W)VL zQK!;tSD4mnrl1i%8oi=sECOqe79qZ`on{TA{<61+Uba;EuBep&;*bRdh{xPY*@3lq zWA~|=_TPcaLSt8-XU#er?+v)a2aMz?WttQ=Cp~;-eRF{ul_%d0UU^7hHjpCS+h6Ex zOBeI095iC34@>i9P)eHzFzYu~hwEv6po_RG6_)a=@hTvkDyyjL@O`Nfjo9Ux|DGbV ze&aKe*QSzhw|CLdwQ3zVgTSr?W79d_=6!=r#BDM9s~c)rVQf6wI&d?(S-MD{Z->vx zWj?KphMB};D{;CbJgA6?Lz`^p=+Iu6#LHpQ%g4PvHEuhoq`ebA^i9JRS)@kP`Q!OJ zz-L3w7(HrTzElNrZ%jz9sA+r}a z&xMHBeul3h5sx@O{{9L`wZ)Td?b!~Q@M^~?LI5w5$;C2{dzWJWsnZzuI^qTAT#>HY z@pyy9vB1`JB~e7Z`*+qCgp+f#U;(QTTJ9J3Wa zTwxjggpMz0k)e{OnDXiGUqj?T@`HD-_}$$gHT-p!N8L?0kM2Vt%HkQ^mWib0FzHYA zv6?8i9N#o*+Y8ru^zDlItXh%7`NXQ;$d{W-rq@hf%awhEHhx5kjI ziE^@z@Xg7p&*)2CNt9BRX{CTWTx`0Td?29jy1mK{g^vOmLWDrkNS;D_60a@RViK2m zP^(`swc81~)?-m|v??0OP_fOiyO{4S|HT5nu?fBa3kzs&+V>1426ZnI(y9$IFlZSR z;tfXauP&0QZb#k`@iG5_w_511c%*ouKmM_hl`V{U7QMT zCb;q;2QIq)klpRMDpe@HBrp*uBTXzwNfxC}I`gR-_H^qa=r{M^pTASD&6Q`t&w}B7 zc^Wn1<`72hd;OCNo~TAZwG=I^g4mZGrs!N zuAs2Q?T}M{YIoeuY;te4PgL_XP)xYeycT}-n)mhVkf>{LS(EnSQbjTt<_jGi%BW=w zXCvzB0t6IY0d#=~(96X#w_A?hF^N1<_-T$5+V&3%uIiP(=ArsX(XQhM2kloH9$era zud+5#ZAR3aTKSBWt{#I4tIli>gsH8qQ_Z}=n-uk#tDikVN zZ^d+23S=UvYYdZ*)aYaUd>-Mp%hkm(g~-CtsHQ56iC9%33ThSaRXz^4wokhpyzu(w zP0Ur|Wl;Bx)3_Vn308Tj=ZwJTtwEd!c?IYj+D?h87N)8g4EhF}AAf3%qXZ~(WMkBK z$BVUth25O9KEhP*hG7-~{wP1(dFK)h4*Rn+<7zR#GSKvch&evMe)&~Cp7K(64B6&b zftVi#fgK3_5_11U`AWS=GLZ|0{DS@_bm*kX2_CuA>USs|{dSz~bfi!=RQ5+k!7ZcGn`Z7>l3ZFhM_i`z9wz??1wooV&h)LRY$%d)Pnjy?_+! z-FH~&lUiZcEU{aZbnNRnkLqp)11wGUz1msl?b)2G5JHvt?4R!IWrVcF&?%Dmum3%4 zXm2xD{l5Bs((|eMdw}SYqq>_g@JU%|Y?GV(NMPEOZ!Kov4XD4|xrg!S{=(eJBT1X| zTZ3<;2dj!(I4$L|ZC_+C!!gFX9b1fk&sH&=$Cy0T~f zD#f$k6_@+Ced-1rkbxAsr`7Tww~u)T=;!YP1u-wuJ(G)!v5()iFeGxXrF}vZx(GBu zP(LYthh@m3YMx>a{2|$Baj-9dZC4(Knh!(n(F5JB1cCc+8vX0bNhj_6dDJ#9@>+!R zH8<$vk>N9EMpt=l+7;59P;NFqZdC7j$ke=^bN-f}0srf|aepL1@%Gj|aw7ckVqLX? zmyw&^-J_{uX=g|4QIm7HyW7~E46Y%>@I-m(e5Ovu&^VV6WSxc*P+qEVW4j$J$#C}~ zk;o~osvK*NzSFZVqixc2!#@-g{!B>tVtEz~sB(i>F=$t9{SFtA2)rmA!R&IxOHM;W z56iLOP=Ir7ctq!`Adicjcec#4mEvai^os5q0acKWpYtPJ3P|V9+4rYRUrx2|lH>8G zl5l<;_HHM)@M5)SDf8_bF4)Qq-LzZXv6hc##~G@yLPC>1KmztWkPdbWW6k$=#5h#mVP{$!2MU9S8<64$&bZD1epFeD=uRp#?lGL1 z%I%(sXf!1)lJ`D~cgQ0TB!2%&;9fc_4`#%|{CYPyJieM|&=Ac?>5PcO>v zk+kTak~Ja}XciGsb{?hQN6kMY)trj;5RG$s^=A`lAF(iXl`Rl{90P*|~7w(pQBB55FydLD+M_upBu;!(V}hjGATH7|pagJg2L2o=rOJo`gXB=AW%)aB;cpup~+0I3t^r zoBF_bAXW5ry;lL+bZKEh14~=+A_Z^J4hm4-@Y?GTy1NTSx`LGs6*}CuOff#g%r-6F zXm(3`PwG7nwRGGajurM-8jfMqQSocM zcoq={ZXSLTk8tw4#XY>fsyfnUw1$w3K+-IR8L}RPobJp>Nq^p+exj5n)KRvKfS4hR zB&2Ks3ESN|lBYP|en{lM{R9Z7n>(<{AeG|@BYDslG-C1wi$@15eF2sl#qdR{7_)B? z-6}9e?M5q@08dXW8+S+)o(xJYy5#VLMR(2@eURnK`;(Zn$?{&qTxH7-dXpB(aOyEF z7tNf5dZbft76IRhI;=Dw>3H+%N-<5ykILs^=KKAHpN^{(D{MNx;(nNjMV7wY*s4lo zQC$msPwzB^%tmA@OqDJeVJ)3V`$RQYI?SXm$xYh{=p`U8 zA~{`DS$cnG`O83uf(Q`Mvv4Y1(qENfp+JJutb&OvUk`Mp+)*-jvtT9{A+Gz>P zoyCu1)mOjZbwqL5BJJoZ)7e}Oo^7lag;>iV&+Mjin%Z122|uh2wn!&4eiP6) zlKgQ3tyx#Q_C_0xdki`g4|49M(Y|5UD)7Y^>&tqpGHzh@c+IsKT8ASW!&-PEYKo() zmIdm2-WYVgd2qrnaeGSU#e*1;!#f~R15_KmX+0YgOYGdKY;clj#ix4mUynF7MzHwe zDecwO{|(cAW}kv~Yzt%458b4+Iw?r_3D6RgfrQ}jgNa{x8u+T+*d8#(s0~r{2=~Y! zKJ?7nNgd25=UOM58pVdj1cL8lbBJ-<(ep6EH(qm|5ibdmEp+Z{iCp@V6@M%&|6xNX$>VE?L~ep#TTqT*=G zJ(nZ<15!~?-yXXicz?#v9v*MNW&403f|?n8dU2NOMY=ad+Bav%{B1Tgfxq)a9n(Ss zuXQiGK^5_fExm?sZFvKeeN?)l9MwD1<2Fq1UqqZxu9mFyHw0`*YJhBry<*hf&|T00 zB-L+~@Pr%=D}GG`8mw`6mPy5Tw?zM5`$#c{vk|o>KFu4T@tA~^1U<*R;jEdRv*guZ z>_AU59F_`DVn=!^X6-*DdvY$8coYSHezP^@CC!b?^esThJ<^1gh)wIO?{|De<5Q1F zc6z(WUyoVS6uw@Y-$kPkLzlpz5c(=mX@L^FzUoxk&_u0a=BJ66%R(rw_qB%13(_CD z>B&f&8$~_v8V;OqOrLKkpDj>30?C%s0%MH56_qlpOWDv(9`JqAokui2%8x0sIu7>q1EJ`44i@!j74r zjzmq9tvQw@?#CT3`m*Mn(r(=d^GcS0!vYzu_}MN?e7M8{6fMgO3%9C>)_u9Z9&5f( zP~D+6Kb_{ZwWN7O!9{A=GJ9XjZX1|VCxHh`7=^7tWoQo`oorNI7Jxd~5pAeX(iAWE0A}6zM z`JE(4#$$ao(KLK(0zM?M*3Pa~Pp0U=hR&y z7X=*-q=AWU9>{*yiu@+JqUiRI-2xbeIIH*@R{9dDD&D_U3j1rJ+$7SP3Cs)zyNw=? z5lcchn*=D46n;0tjCot@NPBRG{UfcK`*Ax*-wkI<0=Yy~mbq9P4Un(d3Q_pLjD5y` z1$Ix6tkW>x0Lc_`*=U$lMx}-aQFtJGBnOiA4&w?s_BhnAM}$32RG}mu=O}2M%2o&< zpz>X^Kdg=>V0spLja?eQFZmqmDhvW%SxS=s;cU-oxlkKQbE3mSXC+ z)s1Zs?%)U6*VZ>cgaWCI9Pj)(Un|@AwMt+7YfZ2^+~UQ=96+eshy|S}-v9;BsFO@( zI9JqK6a=g5=eh$S;uIusy*)-1BAulF;w#520V^&98nYE}9WVP{r_x3a`i*`mw{bw0 zK^Q&Kc&3bXLaN3oWWv;Fpc3-9YJF5{yNUdf$1%K~kfox;v}2lXrbni_yo zhC&l(L6q%iJ*Og5(^BOn))}qBZ`tJ}d4|sZO&*sSrHMFjvcTrc6w$TlEvKd`ta-T$ zKv?~TJH}1XdUHQi8I&rxUYsA0il3hz=6OAzDd*?9x?sG^)tO7AtL+K&ec^O!t{_3+ z9a{8ZY=P=x_REE+JT?Q=uX*W+UP*3-SU^w7lL)@Q(A4y%oIFn9HFerfY{>ES|FvFD zbZf5$vZMZzu-B`s)V4)i{-=JJOD%hLBYPXi+7F~4EPtXFLB>+G?a15eLT8WD;!2Pm zUty*r<>zY8yzpK-L+R8hU$uqslv0GpLU+Z)#D5WHn+drQDf#;anDsZb!Uz2A)K>Br z=`K1k>T(ruujB1t|Ffm25e0S1XThMs@#a;qczN%mjEIaJB zLrh$jkVm)t{B0`3uOIZveh+BzAFNTLtUoz9skF!r(|(8MM7Uc{G;J$^T=Ureqyh?u zyik>Scq3&qctu;`*jjvCChsXfTTMNq=}^F}_$~_6$Q6U8_XNzST33*V&_Jg7d<`H@ zkc!ijfUFG`L5&E=E4HUKW^G&?|d(e{@I>ljmzz9HUbfD8~oj1x0r*m)> zayb$A%MefGipHbUj>Vc?i7{e?%E;g|C_}aRD;5VKZfx`F1{YRaHL3iz-!VADwr9Ss zgj!~uHmg{q5%m)1b>ME#JqKCgLw?!M-4Gbr(BNDeCuX_Ndsy2`m$D;C__E!6Fo9_E z=j0+6T4@hT^y|6mHqMrVH*Q$cts|D3Tr6$hj{{!cFp4ol;5v=`IdqVQRk!Awh!!K$ zc+}QuMiv9Kgtcc+Cea{zJ7$q-J@~5gk`4D?wpxiGJ1zeC3r> ztN~=>s``tp`VHUQQ=uWQs{29}Uc3Z>8#2dB?XSkMfAmb+;lghF4cHt&>&gA7PAqkW zlzz<;ozTP0L(c4_KTV#8>Q~eMYKHviZ~IT4-Kl{ki|!7P4Vm`qijVkLUZylEhRQPi zw3yAWa%}=h)wj}4TDVdh5!3^6*}w>6Oi(O6V!6_L~byS+u`By`=3@U{mD%Q@Nbt! z)&yj?sh?E7zVGlSDMXwm*{|!W`bB&?^69VW!zl8ZvT-PdbC}Y*V_0)@K`l4OL-SR* zMqHI=Q5Fy%!r`*gm66O%Un1@?-H8}4E5s*NN9c@cyo-ZG%D!Rh33rr3u7fER(p(@) z>A77_j%ze<4Ep`FzMe=t_i^P$1b*2J70!rl;35g zUSLl33B5n=)_1_(plU)=Qyf?2THC%%9?*tFiipujg=OD+KS9L5QpR?xdAR!99%_V* z8N9}XCzs6LSiOwqq;TO}bgx$A%3e$`V7vC(>fZa-xo-`EWV08iheTRH@0M3|ALdl< zcC4jKDbf}9WXbhQp&NKJU^x6h%r+iw-IcjfdDLEG zZMw$OQoZ|^W1H0KHU4y)QGt;ca;&~vu5@9S&mpX&swWuYy7U$aA3GPM=n)YTV z{Hd`1k=BJYomMIx@wsW^gi@r4DZgyxbe19Yfdb0BUN)8M`@Cb&k_@((&jUvv zDFw+mAaXuVY4nmUrm)Sd4mV~~?w{HNIUumrk38S8uM}hn3~ISxd-9l(-mQPEBXVhuK_P-F6+HZE z?2!n{?mD7GH!&cFUMI^%-Asmk{V=|#Q97NB*r;edT`$cOo%!f+ca^O|+M&?ihT5X@ zUD39#8}3D-B$L$gYL{dky|3>#!Bg@`%=dz^waq`JGu+`dLzFwB%Isb?`aR+F0y(yC z%s03-!U`S-je=-UWp#0J^hrtV^=(U1b5clu-POg9$<^$W0ITdkM%~O3QeNjFrfn_M zME!cWr!KU;B-P#D4f})7;#i6sFgF&>H(Xx+Cc1ajhvRlt&lT%CDw4zgLnoyC&|05c(v%;#b{i1}pht6KQGz7*Z#*DtR&WzJSKqRR1og-@T9$vjqv z>A>!clSCWQb?PVn0(&XY!>1el5M%l{oF?V*^hX))0biqSRBeH=nm&jeM z@io|hCHB+VW%;^_6kA^?s+y%Ea>e}gIbW_g;kgSK|ErotWc9zPHjKl~h2MVv5VnQp z*kZcii$2P6TEn(qVX02}6@}a|HW)wJHP{-^|0Hv#(t2D(LhUC^m0sg6BKhKDs$n{x z{X)fL?Az3Fy`5xDj<=X?DJdyKt*@U&ZR(;5qhB}`5I#V?gDWA_nSE{qP9>D3`53>Y zx}PkwsX&iOwBTQ;^hcJvQ#Jh#%UJAfEY%CsPgD}Uj!BQMG4RV8T@TB@PmJ5nQ6&)m zd^l#C0l=C@41=8STE$ILv<4L{(9ykX4M_OEC)D{bkz19b-NlXv@=;vl#`^H`CgYM+ zdx#SB)g;`6x_Vb2UC)gU$)+0f+GXV)QvdJ&1n3l6f?!j=ijtD%UKcrR!${B6m*s?T zmu&oea8>^x_;Y!=tzJu1?DE`EGhu~LrF#KgDjw)xfgaa5Ejme{!LGq}u=c|R z=)e9hZDn@Isl^QION<^cMNczs7%^cRD>@gFWYK`%SuU4hGN7Z4wvM|BU$pFX z8i=p^mA@zjpu5}WBi5~4<2rohEhf=#%P(Gvn6dW8Ao|T+m4q6~W`BRS82)1Ysge!O zDwED#Y;7m?tEu&iUi{(RSco{m%Oi)Gr;^ysuUVoaTx6l}fDq8Qup;k6&G=2>&E?cJ zg4YH?FVqRTratorA*4W;luzZAUN!VyR%;bE)(^T@V_9#9yrolnAG!oXB_}LG!}TUf zk0jb^k&yhU%2QBx29^lnf5jW4p)MXxhMrx~A}j!C@s_PjguN(nT`u#tTkd|QF|aJ0 z21=s_&PO^w9HXq^G9xl0t495!LwD8DHclu07(uJm33^9b+4=i#ubYPX4_;*|96n_F z2=4f~7~3m~WT80-9%_fwVY58HPxy`RwK|kXOytuZ5>@Uof|jgFr~bC3QlG1W7mzDM z&zlU?!-A0|Q5JGp+$(boGwpj*`c#`!751rwCb`}~rzxNI*XtP4MDd)%fz@P>nqZ>e!dnU877MY`>)tU*y%T64aH9%S|aP2nxk?V zy=A#h)U%h5Mr#opr`qV|<0k*r0^)->`JMu*vps7!knS3BT6^pJnPUuH?~N-2Y+pzJ zqca@uUy7esrp>viNc3dNWEHlig)#Hj=^y6sfC+Pq`yIf!#kxu4XJpi z-L(L<_^$@5_4**Gd~W$m%C?K)ZS07e3Fpl4r~6<~k@^@+Xq(MlWRkx8kT7@Vn_EA8La@+|Bc6#A{8-5(*10yo$;KwrnmqO3Gx^bYkk$c| zXbRgML*&dx>l5L3>xX1H9^HeJlLdeabeQ0YarZyAgE!BNj1alW&jJ5;<}#m&6hWM_ z5;Lv7Va~Xs@4XDs4l1^4Qa%WONly%=j*!x*mk~K!SzW`81Q=PIL=Pb3-$WQmPKiC&` zhIq$hNb(88-&=XdcpuxQ4(=`UVGVO3nfpo5S*C0v!}?rNcjwN-RKK)BEX#qQS1CK* z1+&5N4)Dh^`k67UR8ehFIO@?8z9>Z2@LN2oI!MHbu_17 zWyrt~ZoX0T=>LIF&GDJI4Fty&{^j(XMY~molh0@Z!{ts>Z_cR&)oB&J<%HmAUttPE zdIZ~KG-n|p&P&DeLOh$)*Cx^>(1?La8Y(RhMBL<*t`A8U$zGCMCjq@Ucc20 zAslC#sMQZlqKXyp8)Y58{KSe=A^HR|FvG!$)@!PJe1~_eZC|b5z|&eVONPRlf(S;ny~N$dHC_sdU{dgm~Uu`$2=)OAr7au(kDmmFf8z z7AyL9(p&TzV1m=REp4`u|C#p3>w}w7Ti~l}YQLzUA%)u`$fW{u4Af$LLazqhkqz{1 z5+TNARI4GXZ2>`cidWdHw*#ZMHzmXWnqPna#`}M;q|to@z`<}JvbMUKoqtFEWW5iU z0_d)thFz3bf$3=A@Wjml>hh6(3j_ z=<4c@W$7vKLM}sn^p-nJjLxChVqjSN|Ai*``ysdJg~W1Qv;d)7upwZ;Q_9j5_4ijb zmU%AV)2q4hBOT?BWBBvnBk;#N0MLXW4u$Zi?=MNRKFr(jx~^gtOjV zA*<;DC2m!f#9NFBax3i?V**O&VE_t4maw_8aa$y$0YNJgT*S-i71%

W4G60yd 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

HNSmwHUl*yn`?8W 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૯HjFrHTYR3^90HY9nxT?*e=Df>iWw*CDvI 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

kqMW$i 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 LcCGTN>%;#6Ion(p literal 0 HcmV?d00001 diff --git a/training/examples/frozen_lake/verify_rollout.py b/training/examples/frozen_lake/verify_rollout.py index 40b9d4ba..a88472e0 100644 --- a/training/examples/frozen_lake/verify_rollout.py +++ b/training/examples/frozen_lake/verify_rollout.py @@ -1,8 +1,8 @@ #!/usr/bin/env python3 -"""Run a few rollouts on qwen3-8b serverless and write eval-protocol JSONL for visualization. +"""Run a few FrozenLake rollouts and write eval-protocol rows for inspection. Usage: - python verify_rollout.py [--num-rollouts 4] [--port 8765] + python verify_rollout.py [--num-rollouts 4] [--port 8765] [--model-id ...] [--visual] After it finishes, the vite dashboard opens automatically at http://localhost:/table with token-level debug data in execution_metadata.extra. @@ -12,11 +12,14 @@ import argparse import asyncio +import html import json import os import sys import time import logging +import threading +import webbrowser from pathlib import Path logging.basicConfig(level=logging.INFO, format="%(asctime)s %(message)s", datefmt="%H:%M:%S") @@ -30,53 +33,97 @@ from eval_protocol.pytest.types import RolloutProcessorConfig from eval_protocol.dataset_logger import default_logger -from training.examples.frozen_lake.frozen_lake_rollout import FrozenLakeToolRolloutProcessor +from training.examples.frozen_lake.frozen_lake_rollout import ( + DEFAULT_SYSTEM_PROMPT_INSTRUCTIONS, + FrozenLakeToolRolloutProcessor, +) +from training.examples.frozen_lake.frozen_lake_env import build_frozen_lake_tool_env from training.examples.frozen_lake.masking import compute_model_output_spans, build_ui_token_mask -DEFAULT_SYSTEM_PROMPT = ( - "/no_think\n" - "You are an RL policy for FrozenLake.\n" - "Pick the action that moves toward G while avoiding H.\n" - "Always respond with exactly one tool call, no text." -) +DEFAULT_LOGS_DB_PATH = str(COOKBOOK_DIR / ".tmp" / "frozen_lake_verify_logs.db") +DEFAULT_REPORT_PATH = str(COOKBOOK_DIR / ".tmp" / "frozen_lake_verify_report.html") +DEFAULT_KIMI_TOKENIZER = "moonshotai/Kimi-K2.5" +DEFAULT_SYSTEM_PROMPT = DEFAULT_SYSTEM_PROMPT_INSTRUCTIONS -def load_seed_contexts(path: str, max_seeds: int = 4): + +def load_seed_contexts(path: str, max_seeds: int = 4, seed_values: list[int] | None = None): + wanted_seeds = {int(seed) for seed in (seed_values or [])} contexts = [] with open(path) as f: for line in f: ctx = json.loads(line) + if wanted_seeds and int(ctx.get("seed", -1)) not in wanted_seeds: + continue contexts.append(ctx) if len(contexts) >= max_seeds: break return contexts -async def run_rollouts(num_rollouts: int = 4): +def _looks_like_kimi_target(value: object) -> bool: + lowered = str(value or "").strip().lower() + return "kimi-k2.5" in lowered or "kimi-k2p5" in lowered + + +def _resolve_tokenizer_model(model_id: str, tokenizer_model: str | None) -> str: + if tokenizer_model: + return str(tokenizer_model) + env_tokenizer = os.environ.get("FROZEN_LAKE_VERIFY_TOKENIZER_MODEL", "").strip() + if env_tokenizer: + return env_tokenizer + if _looks_like_kimi_target(model_id): + return DEFAULT_KIMI_TOKENIZER + return "Qwen/Qwen3-8B" + + +def _validation_target(*, model_id: str, tokenizer_name: str, visual: bool) -> str: + if visual and (_looks_like_kimi_target(model_id) or _looks_like_kimi_target(tokenizer_name)): + return "kimi-k2.5-vl" + if visual: + return "generic-vlm" + if _looks_like_kimi_target(model_id) or _looks_like_kimi_target(tokenizer_name): + return "kimi-k2.5-text" + return "text" + + +async def run_rollouts( + *, + num_rollouts: int = 4, + rows_per_seed: int = 1, + model_id: str = "accounts/fireworks/models/qwen3-8b", + tokenizer: str | None = None, + visual: bool = False, + allow_plaintext_action_fallback: bool = False, + temperature: float = 0.0, + seed_values: list[int] | None = None, +): api_key = os.environ["FIREWORKS_API_KEY"] - model_id = "accounts/fireworks/models/qwen3-8b" - tokenizer = "Qwen/Qwen3-8B" + resolved_tokenizer = _resolve_tokenizer_model(model_id=model_id, tokenizer_model=tokenizer) seed_path = str(FROZEN_LAKE_DIR / "seeds.jsonl") - seed_contexts = load_seed_contexts(seed_path, max_seeds=num_rollouts) + seed_contexts = load_seed_contexts(seed_path, max_seeds=num_rollouts, seed_values=seed_values) logger.info("Loaded %d seeds", len(seed_contexts)) processor = FrozenLakeToolRolloutProcessor( model_id=model_id, - tokenizer_name_or_path=tokenizer, + tokenizer_name_or_path=resolved_tokenizer, api_key=api_key, base_url="https://api.fireworks.ai/inference", - temperature=1.0, + temperature=float(temperature), max_tokens=128, system_prompt=DEFAULT_SYSTEM_PROMPT, logprobs=True, + observation_mode="image" if visual else "text", + allow_plaintext_action_fallback=allow_plaintext_action_fallback, + max_parse_retries=3 if visual and _looks_like_kimi_target(model_id) else 0, ) config = RolloutProcessorConfig( - completion_params={"model": model_id}, + completion_params={"model": model_id, "temperature": float(temperature)}, mcp_config_path="", steps=30, - semaphore=asyncio.Semaphore(8), + semaphore=asyncio.Semaphore(1), ) all_results = [] @@ -88,7 +135,7 @@ async def run_rollouts(num_rollouts: int = 4): dataset_info={"environment_context": dict(ctx)}, ), ) - for i in range(2) + for i in range(rows_per_seed) ] tasks = processor(rows, config) @@ -106,10 +153,230 @@ async def run_rollouts(num_rollouts: int = 4): return all_results -def enrich_rows(results: list[EvaluationRow], tokenizer_name: str): +def _build_row_validation_details( + row: EvaluationRow, + *, + model_id: str, + tokenizer_name: str, + visual: bool, +) -> dict[str, object]: + extra = row.execution_metadata.extra if isinstance(row.execution_metadata.extra, dict) else {} + token_turn_traces = extra.get("token_turn_traces") or [] + model_request_traces = extra.get("model_request_traces") or [] + tool_call_traces = extra.get("tool_call_traces") or [] + full_episode = extra.get("full_episode") or {} + prompt_lengths = [len(trace.get("prompt_ids") or []) for trace in token_turn_traces] + completion_lengths = [len(trace.get("completion_ids") or []) for trace in token_turn_traces] + image_counts = [trace.get("image_count") for trace in model_request_traces] + token_ids = list(full_episode.get("token_ids") or []) + mask = list(full_episode.get("mask") or []) + logprobs = list(full_episode.get("logprobs") or []) + + validation_checks: list[dict[str, str]] = [] + failing_checks: list[str] = [] + skipped_checks: list[str] = [] + + def add_check(name: str, status: str, detail: str) -> None: + validation_checks.append({"name": name, "status": status, "detail": detail}) + if status == "fail": + failing_checks.append(name) + elif status == "skip": + skipped_checks.append(name) + + rollout_error = str(extra.get("rollout_error") or "").strip() + add_check( + "no_rollout_error", + "pass" if not rollout_error else "fail", + "row completed without rollout_error" if not rollout_error else rollout_error, + ) + + if visual: + observation_mode = str(extra.get("observation_mode") or "") + add_check( + "observation_mode_image", + "pass" if observation_mode == "image" else "fail", + f"observation_mode={observation_mode!r}", + ) + + add_check( + "token_turn_traces_present", + "pass" if token_turn_traces else "fail", + f"turn_count={len(token_turn_traces)}", + ) + add_check( + "prompt_ids_present_each_turn", + "pass" if token_turn_traces and all(trace.get("prompt_ids") for trace in token_turn_traces) else "fail", + f"prompt_lengths={prompt_lengths}", + ) + add_check( + "completion_ids_present_each_turn", + "pass" if token_turn_traces and all(trace.get("completion_ids") for trace in token_turn_traces) else "fail", + f"completion_lengths={completion_lengths}", + ) + + if len(token_turn_traces) < 2: + add_check("multi_turn_continuity", "skip", "requires at least two turns") + add_check("prompt_prefix_continuity", "skip", "requires at least two turns") + add_check("completion_replayed_in_next_prompt", "skip", "requires at least two turns") + else: + prompt_increase_ok = all(prompt_lengths[idx] > prompt_lengths[idx - 1] for idx in range(1, len(prompt_lengths))) + add_check( + "multi_turn_continuity", + "pass" if prompt_increase_ok else "fail", + f"prompt_lengths={prompt_lengths}", + ) + + prefix_ok = True + replay_ok = True + for idx in range(1, len(token_turn_traces)): + prev_prompt_ids = [int(x) for x in (token_turn_traces[idx - 1].get("prompt_ids") or [])] + prev_completion_ids = [int(x) for x in (token_turn_traces[idx - 1].get("completion_ids") or [])] + current_prompt_ids = [int(x) for x in (token_turn_traces[idx].get("prompt_ids") or [])] + if current_prompt_ids[: len(prev_prompt_ids)] != prev_prompt_ids: + prefix_ok = False + replay_start = len(prev_prompt_ids) + replay_end = replay_start + len(prev_completion_ids) + if current_prompt_ids[replay_start:replay_end] != prev_completion_ids: + replay_ok = False + + add_check( + "prompt_prefix_continuity", + "pass" if prefix_ok else "fail", + "next turn prompt_ids preserve the prior prompt_ids prefix", + ) + add_check( + "completion_replayed_in_next_prompt", + "pass" if replay_ok else "fail", + "next turn prompt_ids embed the prior completion_ids immediately after the prior prompt_ids", + ) + + request_count_matches = len(model_request_traces) == len(token_turn_traces) + add_check( + "model_request_trace_count_matches_turns", + "pass" if request_count_matches else "fail", + f"request_traces={len(model_request_traces)} turn_traces={len(token_turn_traces)}", + ) + add_check( + "tool_call_trace_count_matches_turns", + "pass" if len(tool_call_traces) == len(token_turn_traces) else "fail", + f"tool_call_traces={len(tool_call_traces)} turn_traces={len(token_turn_traces)}", + ) + + if visual: + image_count_ok = ( + bool(token_turn_traces) + and len(image_counts) == len(token_turn_traces) + and image_counts[0] == 1 + and all( + isinstance(image_counts[idx], int) + and image_counts[idx] == image_counts[idx - 1] + 1 + for idx in range(1, len(image_counts)) + ) + ) + add_check( + "image_counts_increment_per_turn", + "pass" if image_count_ok else "fail", + f"image_counts={image_counts}", + ) + prompt_text_present = bool(model_request_traces) and all( + str(trace.get("prompt_text") or "").strip() for trace in model_request_traces + ) + add_check( + "prompt_text_present_for_image_turns", + "pass" if prompt_text_present else "fail", + f"prompt_text_turns={sum(1 for trace in model_request_traces if str(trace.get('prompt_text') or '').strip())}", + ) + assistant_turn_len_ok = bool(model_request_traces) and all( + int(model_request_traces[idx].get("assistant_turn_len") or 0) == completion_lengths[idx] + for idx in range(min(len(model_request_traces), len(completion_lengths))) + ) + add_check( + "assistant_turn_len_matches_completion_ids", + "pass" if assistant_turn_len_ok else "fail", + "assistant_turn_len matches completion_ids length on every turn", + ) + if _looks_like_kimi_target(model_id) or _looks_like_kimi_target(tokenizer_name): + kimi_instant_prompt_ok = bool(token_turn_traces) and all( + "" in str(trace.get("prompt_text") or "") + for trace in token_turn_traces + ) + add_check( + "kimi_instant_prompt_contains_empty_think_block", + "pass" if kimi_instant_prompt_ok else "fail", + "each Kimi prompt_text should include when thinking is disabled", + ) + + add_check( + "full_episode_token_ids_present", + "pass" if token_ids else "fail", + f"token_count={len(token_ids)}", + ) + add_check( + "mask_length_matches_token_count", + "pass" if token_ids and len(mask) == len(token_ids) else "fail", + f"mask_count={len(mask)} token_count={len(token_ids)}", + ) + add_check( + "logprobs_length_matches_token_count", + "pass" if token_ids and len(logprobs) == len(token_ids) else "fail", + f"logprobs_count={len(logprobs)} token_count={len(token_ids)}", + ) + + if token_ids and len(logprobs) == len(token_ids): + generated_positions: set[int] = set() + for idx, trace in enumerate(token_turn_traces): + prompt_len = len(trace.get("prompt_ids") or []) + prefill_len = int((model_request_traces[idx] if idx < len(model_request_traces) else {}).get("assistant_prefill_len") or 0) + completion_logprobs = trace.get("completion_logprobs") or [] + for offset in range(len(completion_logprobs)): + generated_positions.add(prompt_len + prefill_len + offset) + + generated_present = all( + pos < len(logprobs) and logprobs[pos] is not None + for pos in generated_positions + ) + prompt_positions_empty = all( + logprobs[pos] is None + for pos in range(len(logprobs)) + if pos not in generated_positions + ) + add_check( + "generated_logprobs_present", + "pass" if generated_present else "fail", + f"generated_positions={sorted(generated_positions)}", + ) + add_check( + "prompt_positions_have_no_logprobs", + "pass" if prompt_positions_empty else "fail", + "only generated-token positions should carry logprobs", + ) + else: + add_check("generated_logprobs_present", "skip", "full_episode.logprobs unavailable") + add_check("prompt_positions_have_no_logprobs", "skip", "full_episode.logprobs unavailable") + + return { + "target": _validation_target(model_id=model_id, tokenizer_name=tokenizer_name, visual=visual), + "passed": not failing_checks, + "failing_checks": failing_checks, + "skipped_checks": skipped_checks, + "turn_count": len(token_turn_traces), + "prompt_lengths": prompt_lengths, + "completion_lengths": completion_lengths, + "image_counts": image_counts, + "token_count": len(token_ids), + "mask_count": len(mask), + "validation_checks": validation_checks, + } + + +def enrich_rows(results: list[EvaluationRow], tokenizer_name: str, *, model_id: str, visual: bool): """Enrich rows with detokenized tokens, full-episode view, status, and score.""" from transformers import AutoTokenizer - tokenizer = AutoTokenizer.from_pretrained(tokenizer_name, trust_remote_code=True) + try: + tokenizer = AutoTokenizer.from_pretrained(tokenizer_name, trust_remote_code=True) + except Exception as exc: + logger.warning("Tokenizer load failed for %s: %s", tokenizer_name, exc) + tokenizer = None for row in results: extra = row.execution_metadata.extra @@ -125,8 +392,10 @@ def enrich_rows(results: list[EvaluationRow], tokenizer_name: str): prompt_ids = trace.get("prompt_ids") or [] completion_ids = trace.get("completion_ids") or [] all_ids = [int(x) for x in prompt_ids] + [int(x) for x in completion_ids] - detok_tokens = [_detok(tokenizer, tid) for tid in all_ids] - trace["detokenized_tokens"] = detok_tokens + if tokenizer is not None: + trace["detokenized_tokens"] = [_detok(tokenizer, tid) for tid in all_ids] + trace["prompt_detokenized_tokens"] = [_detok(tokenizer, tid) for tid in prompt_ids] + trace["completion_detokenized_tokens"] = [_detok(tokenizer, tid) for tid in completion_ids] trace["prompt_len"] = len(prompt_ids) trace["completion_len"] = len(completion_ids) @@ -145,22 +414,33 @@ def enrich_rows(results: list[EvaluationRow], tokenizer_name: str): logprobs_arr: list[float | None] = [None] * full_len for k in range(num_turns): turn_prompt_len = len(token_turn_traces[k].get("prompt_ids") or []) + prefill_len = int((mrt[k] if k < len(mrt) else {}).get("assistant_prefill_len") or 0) turn_lp = token_turn_traces[k].get("completion_logprobs") or [] for j, lp in enumerate(turn_lp): - pos = turn_prompt_len + j + pos = turn_prompt_len + prefill_len + j if pos < full_len: logprobs_arr[pos] = lp - full_detok = [_detok(tokenizer, tid) for tid in full_ids] - extra["full_episode"] = { "token_ids": full_ids, "mask": mask, "logprobs": logprobs_arr, - "detokenized_tokens": full_detok, "num_turns": num_turns, "first_prompt_len": first_prompt_len, } + if tokenizer is not None: + extra["full_episode"]["detokenized_tokens"] = [_detok(tokenizer, tid) for tid in full_ids] + + validation_summary = _build_row_validation_details( + row, + model_id=model_id, + tokenizer_name=tokenizer_name, + visual=visual, + ) + extra["validation_summary"] = { + key: value for key, value in validation_summary.items() if key != "validation_checks" + } + extra["validation_checks"] = validation_summary["validation_checks"] # Set rollout_status and evaluation_result has_error = bool(extra.get("rollout_error")) @@ -190,20 +470,368 @@ def write_to_default_logger(results: list[EvaluationRow]): logger.info("Wrote %d rows to default logger (sqlite)", len(results)) +def configure_default_logger(*, logs_db_path: str, reset_logs: bool = False): + """Point eval-protocol's lazy default logger at a specific sqlite DB.""" + from eval_protocol.dataset_logger.sqlite_dataset_logger_adapter import SqliteDatasetLoggerAdapter + + adapter = SqliteDatasetLoggerAdapter(db_path=logs_db_path) + if reset_logs: + adapter._store.delete_all_rows() + logger.info("Cleared existing eval-protocol rows from %s", logs_db_path) + + default_logger._logger = adapter + logger.info("Using eval-protocol sqlite db at %s", logs_db_path) + + +def _reconstruct_turn_image_urls(row: EvaluationRow) -> list[str]: + dataset_info = row.input_metadata.dataset_info if isinstance(row.input_metadata.dataset_info, dict) else {} + env_context = dataset_info.get("environment_context") if isinstance(dataset_info, dict) else {} + if not isinstance(env_context, dict): + return [] + + extra = row.execution_metadata.extra if isinstance(row.execution_metadata.extra, dict) else {} + tool_call_traces = extra.get("tool_call_traces") or [] + token_turn_traces = extra.get("token_turn_traces") or [] + if not token_turn_traces: + return [] + + env = build_frozen_lake_tool_env(environment_context=env_context, max_steps=max(1, len(tool_call_traces) + 1)) + env.reset() + images = [env.render_image_data_url()] + for trace in tool_call_traces[: max(0, len(token_turn_traces) - 1)]: + action = trace.get("action") + if not isinstance(action, str): + break + env.step(action) + images.append(env.render_image_data_url()) + return images[: len(token_turn_traces)] + + +def _format_token_piece(value: object) -> str: + if value is None: + return "" + text = str(value) + return text.encode("unicode_escape").decode("ascii") + + +def _mask_class(mask_value: int) -> str: + if mask_value <= 0: + return "tok tok-prompt" + palette_index = ((mask_value - 1) % 6) + 1 + return f"tok tok-turn-{palette_index}" + + +def _status_chip(status: str) -> str: + normalized = str(status or "skip").lower() + if normalized == "pass": + return "chip chip-pass" + if normalized == "fail": + return "chip chip-fail" + return "chip chip-skip" + + +def build_debug_report_html(results: list[EvaluationRow]) -> str: + sections: list[str] = [] + for row in results: + extra = row.execution_metadata.extra if isinstance(row.execution_metadata.extra, dict) else {} + full_episode = extra.get("full_episode") or {} + token_ids = [int(x) for x in (full_episode.get("token_ids") or [])] + mask = [int(x) for x in (full_episode.get("mask") or [])] + logprobs = list(full_episode.get("logprobs") or []) + detok = list(full_episode.get("detokenized_tokens") or []) + token_turn_traces = extra.get("token_turn_traces") or [] + tool_call_traces = extra.get("tool_call_traces") or [] + model_request_traces = extra.get("model_request_traces") or [] + validation_summary = extra.get("validation_summary") or {} + validation_checks = extra.get("validation_checks") or [] + image_urls = _reconstruct_turn_image_urls(row) + rollout_id = "" + if row.execution_metadata and row.execution_metadata.rollout_id: + rollout_id = str(row.execution_metadata.rollout_id) + score = row.evaluation_result.score if row.evaluation_result else None + + token_spans: list[str] = [] + token_rows: list[str] = [] + for idx, token_id in enumerate(token_ids): + token_text = detok[idx] if idx < len(detok) else "" + mask_value = mask[idx] if idx < len(mask) else 0 + logprob_value = logprobs[idx] if idx < len(logprobs) else None + tooltip = html.escape( + f"idx={idx} id={token_id} mask={mask_value} logprob={logprob_value} text={_format_token_piece(token_text)}" + ) + token_spans.append( + f'{html.escape(_format_token_piece(token_text) or "")}' + ) + token_rows.append( + html.escape( + f"{idx:05d} id={token_id:<8} mask={mask_value:<3} logprob={logprob_value!s:<12} text={_format_token_piece(token_text)}" + ) + ) + + turn_rows: list[str] = [] + for turn_index, trace in enumerate(token_turn_traces): + request_trace = model_request_traces[turn_index] if turn_index < len(model_request_traces) else {} + tool_trace = tool_call_traces[turn_index] if turn_index < len(tool_call_traces) else {} + image_html = "" + if turn_index < len(image_urls): + image_html = f'turn {turn_index + 1} input image' + turn_meta = html.escape( + json.dumps( + { + "image_count": request_trace.get("image_count"), + "assistant_turn_len": request_trace.get("assistant_turn_len"), + "tool_suffix_len": request_trace.get("tool_suffix_len"), + "prompt_token_count": request_trace.get("prompt_token_count"), + }, + indent=2, + ) + ) + turn_rows.append( + "\n".join( + [ + "

", + f"Turn {turn_index + 1}: prompt={len(trace.get('prompt_ids') or [])} completion={len(trace.get('completion_ids') or [])} action={html.escape(str(tool_trace.get('action') or ''))} reward={html.escape(str(tool_trace.get('reward') or ''))}", + image_html, + f"
{turn_meta}
", + f"
{html.escape(str(request_trace.get('prompt_text') or ''))}
", + f"
{html.escape(json.dumps(trace, indent=2))}
", + "
", + ] + ) + ) + + validation_rows = [ + ( + f'
  • ' + f'{html.escape(str(check.get("status") or "skip").upper())} ' + f'{html.escape(str(check.get("name") or ""))}: ' + f'{html.escape(str(check.get("detail") or ""))}
  • ' + ) + for check in validation_checks + ] + validation_passed = bool(validation_summary.get("passed")) + validation_badge = ( + 'PASS' + if validation_passed else 'FAIL' + ) + + sections.append( + "\n".join( + [ + "
    ", + f"

    {html.escape(str(row.input_metadata.row_id))}

    ", + f"

    rollout_id: {html.escape(rollout_id)} | mode: {html.escape(str(extra.get('observation_mode') or ''))} | score: {html.escape(str(score))}

    ", + f"

    turns: {len(token_turn_traces)} | tokens: {len(token_ids)} | error: {html.escape(str(extra.get('rollout_error') or ''))}

    ", + f"

    validation: {validation_badge} target: {html.escape(str(validation_summary.get('target') or ''))} image_counts: {html.escape(str(validation_summary.get('image_counts') or []))}

    ", + "

    Validation Checks

    ", + "
      " + "".join(validation_rows) + "
    ", + "

    Masked Token Stream

    ", + "
    " + "".join(token_spans) + "
    ", + "
    Token Table
    " + "\n".join(token_rows) + "
    ", + "

    Per-Turn Trace

    ", + "\n".join(turn_rows), + "
    ", + ] + ) + ) + + return "\n".join( + [ + "", + "", + "", + "", + "FrozenLake Visual Rollout Report", + "", + "", + "", + "

    FrozenLake Visual Rollout Report

    ", + "

    This report is generated from eval-protocol rows after mask enrichment. Prompt tokens are gray; model output tokens are color-coded by turn index.

    ", + "\n".join(sections), + "", + "", + ] + ) + + +def write_debug_report(results: list[EvaluationRow], report_path: str): + report_file = Path(report_path) + report_file.parent.mkdir(parents=True, exist_ok=True) + report_file.write_text(build_debug_report_html(results), encoding="utf-8") + logger.info("Wrote debug report to %s", report_file) + + +def _dashboard_urls(port: int) -> tuple[str, str]: + base = f"http://localhost:{port}" + return f"{base}/table", f"{base}/frozen-lake-report" + + +def _schedule_browser_open(port: int, *, report_path: str) -> None: + table_url, report_url = _dashboard_urls(port) + + def _open() -> None: + logger.info("Opening logs UI at %s", table_url) + try: + webbrowser.open(table_url) + except Exception as exc: + logger.warning("Failed to open browser for %s: %s", table_url, exc) + if Path(report_path).exists(): + logger.info("FrozenLake report available at %s", report_url) + + opener = threading.Timer(1.0, _open) + opener.daemon = True + opener.start() + + +def serve_logs_dashboard(port: int, *, logs_db_path: str, report_path: str, open_browser: bool = False): + """Start the eval-protocol dashboard against the local sqlite logger. + + We bypass ``serve_logs()`` because the installed ``ep`` path and the default + uvicorn lifespan startup can both hang in this local environment. + """ + import uvicorn + from fastapi.responses import HTMLResponse + from eval_protocol.utils.browser_utils import write_pid_file + from eval_protocol.utils.logs_server import LogsServer + + async def _run(): + configure_default_logger(logs_db_path=logs_db_path) + server = LogsServer(port=port) + + if Path(report_path).exists(): + @server.app.get("/frozen-lake-report") + async def frozen_lake_report(): + return HTMLResponse(Path(report_path).read_text(encoding="utf-8")) + + report_route = server.app.router.routes.pop() + server.app.router.routes.insert(0, report_route) + + try: + server.start_loops() + config = uvicorn.Config( + server.app, + host=server.host, + port=server.port, + log_level="info", + lifespan="off", + ) + uvicorn_server = uvicorn.Server(config) + write_pid_file(os.getpid(), server.port) + await uvicorn_server.serve() + finally: + server.evaluation_watcher.stop() + server.websocket_manager.stop_broadcast_loop() + + table_url, report_url = _dashboard_urls(port) + logger.info("Starting eval-protocol dashboard on port %d...", port) + logger.info("Logs table: %s", table_url) + logger.info("FrozenLake report: %s", report_url) + if open_browser: + _schedule_browser_open(port, report_path=report_path) + asyncio.run(_run()) + + def main(): parser = argparse.ArgumentParser() parser.add_argument("--num-rollouts", type=int, default=4) + parser.add_argument("--rows-per-seed", type=int, default=1) parser.add_argument("--port", type=int, default=8765) parser.add_argument("--no-serve", action="store_true") + parser.add_argument("--serve-only", action="store_true") + parser.add_argument("--reset-logs", action="store_true") + parser.add_argument("--logs-db", default=DEFAULT_LOGS_DB_PATH) + parser.add_argument("--report-path", default=DEFAULT_REPORT_PATH) + parser.add_argument( + "--model-id", + default=os.environ.get("FROZEN_LAKE_VERIFY_MODEL_ID", "accounts/fireworks/models/qwen3-8b"), + ) + parser.add_argument("--tokenizer-model", default=None) + parser.add_argument("--visual", action="store_true") + parser.add_argument("--allow-plaintext-action-fallback", action="store_true") + parser.add_argument("--temperature", type=float, default=0.0) + parser.add_argument("--seed", action="append", type=int, default=[]) + parser.add_argument("--open-browser", action=argparse.BooleanOptionalAction, default=True) args = parser.parse_args() + resolved_tokenizer_model = _resolve_tokenizer_model( + model_id=args.model_id, + tokenizer_model=args.tokenizer_model, + ) + + if args.serve_only: + serve_logs_dashboard( + args.port, + logs_db_path=args.logs_db, + report_path=args.report_path, + open_browser=args.open_browser, + ) + return - results = asyncio.run(run_rollouts(num_rollouts=args.num_rollouts)) + configure_default_logger(logs_db_path=args.logs_db, reset_logs=args.reset_logs) + + results = asyncio.run( + run_rollouts( + num_rollouts=args.num_rollouts, + rows_per_seed=args.rows_per_seed, + model_id=args.model_id, + tokenizer=resolved_tokenizer_model, + visual=args.visual, + allow_plaintext_action_fallback=args.allow_plaintext_action_fallback, + temperature=args.temperature, + seed_values=list(args.seed or []), + ) + ) if not results: logger.error("No rollouts completed") return logger.info("Enriching rows...") - enrich_rows(results, "Qwen/Qwen3-8B") + enrich_rows(results, resolved_tokenizer_model, model_id=args.model_id, visual=args.visual) + write_debug_report(results, args.report_path) + + rewards = [] + for row in results: + extra = row.execution_metadata.extra or {} + step_rewards = extra.get("step_rewards") or [] + rewards.append(1.0 if step_rewards and float(step_rewards[-1]) > 0 else 0.0) + if rewards: + validation_passes = 0 + for row in results: + extra = row.execution_metadata.extra or {} + validation_summary = extra.get("validation_summary") or {} + if validation_summary.get("passed"): + validation_passes += 1 + logger.info( + "Rollout summary: n=%d success_rate=%.3f avg_reward=%.3f visual=%s model=%s tokenizer=%s temperature=%.3f validation_pass_rows=%d", + len(rewards), + sum(rewards) / len(rewards), + sum(rewards) / len(rewards), + args.visual, + args.model_id, + resolved_tokenizer_model, + float(args.temperature), + validation_passes, + ) write_to_default_logger(results) @@ -211,9 +839,12 @@ def main(): logger.info("Done (--no-serve). Data written to default logger.") return - logger.info("Starting eval-protocol dashboard on port %d...", args.port) - from eval_protocol.utils.logs_server import serve_logs - serve_logs(port=args.port) + serve_logs_dashboard( + args.port, + logs_db_path=args.logs_db, + report_path=args.report_path, + open_browser=args.open_browser, + ) if __name__ == "__main__": diff --git a/training/pyproject.toml b/training/pyproject.toml index 15c78ef4..7fcb7fed 100644 --- a/training/pyproject.toml +++ b/training/pyproject.toml @@ -15,6 +15,8 @@ dependencies = [ "datasets", "tiktoken", "numpy", + "transformers", + "pillow", "wandb", ] diff --git a/training/tests/unit/test_frozen_lake_verify_validation.py b/training/tests/unit/test_frozen_lake_verify_validation.py new file mode 100644 index 00000000..eaaf9ae6 --- /dev/null +++ b/training/tests/unit/test_frozen_lake_verify_validation.py @@ -0,0 +1,193 @@ +from __future__ import annotations + +import json + +from eval_protocol.models import EvaluationRow, InputMetadata, Message + +from training.examples.frozen_lake.frozen_lake_schema import FROZEN_LAKE_TOOLS +from training.examples.frozen_lake.verify_rollout import build_debug_report_html, enrich_rows + + +def _build_visual_row(*, row_id: str, image_counts: list[int]) -> EvaluationRow: + row = EvaluationRow( + input_metadata=InputMetadata( + row_id=row_id, + dataset_info={"environment_context": {"desc": ["SF", "FG"]}}, + ) + ) + row.tools = list(FROZEN_LAKE_TOOLS) + row.messages = [ + Message( + role="system", + content="You are an RL policy for FrozenLake.\nAlways respond with exactly one tool call, no text.", + ), + Message( + role="user", + content="You are playing FrozenLake. The image shows the current grid and the text below gives the same observation.\n[S] F\n F G\n\nReply with exactly one token: LEFT, DOWN, RIGHT, or UP.", + ), + Message( + role="assistant", + content="RIGHT", + tool_calls=[ + { + "id": "call_1", + "type": "function", + "function": {"name": "lake_move", "arguments": '{"action":"RIGHT"}'}, + } + ], + ), + Message( + role="tool", + name="lake_move", + tool_call_id="call_1", + content=json.dumps( + { + "observation": " S [F]\n F G", + "action": "RIGHT", + "reward": 0.0, + "terminated": False, + "truncated": False, + }, + separators=(",", ":"), + ), + ), + Message( + role="assistant", + content="DOWN", + tool_calls=[ + { + "id": "call_2", + "type": "function", + "function": {"name": "lake_move", "arguments": '{"action":"DOWN"}'}, + } + ], + ), + Message( + role="tool", + name="lake_move", + tool_call_id="call_2", + content=json.dumps( + { + "observation": " S F\n F [G]", + "action": "DOWN", + "reward": 1.0, + "terminated": True, + "truncated": False, + }, + separators=(",", ":"), + ), + ), + ] + row.execution_metadata.extra = { + "observation_mode": "image", + "step_rewards": [0.0, 1.0], + "token_turn_traces": [ + { + "step_index": 1, + "prompt_ids": [10, 11, 12], + "completion_ids": [99, 101, 90], + "completion_logprobs": [-0.1], + "prompt_text": "prompt:initial", + }, + { + "step_index": 2, + "prompt_ids": [10, 11, 12, 99, 101, 90, 91, 92], + "completion_ids": [99, 102, 90], + "completion_logprobs": [-0.2], + "prompt_text": "prompt:stitched", + }, + ], + "model_request_traces": [ + { + "step_index": 1, + "prompt_ids": [10, 11, 12, 99], + "prompt_token_count": 4, + "prompt_text": "prompt:initial", + "assistant_prefill_len": 1, + "assistant_turn_len": 3, + "tool_suffix_len": 3, + "image_count": image_counts[0], + }, + { + "step_index": 2, + "prompt_ids": [10, 11, 12, 99, 101, 90, 91, 92, 99], + "prompt_token_count": 9, + "prompt_text": "prompt:stitched", + "assistant_prefill_len": 1, + "assistant_turn_len": 3, + "tool_suffix_len": 0, + "image_count": image_counts[1], + }, + ], + "tool_call_traces": [ + {"step_index": 1, "tool_name": "lake_move", "action": "RIGHT", "reward": 0.0}, + {"step_index": 2, "tool_name": "lake_move", "action": "DOWN", "reward": 1.0}, + ], + } + return row + + +def test_enrich_rows_adds_passing_visual_validation_summary(): + row = _build_visual_row(row_id="passing", image_counts=[1, 2]) + + enrich_rows( + [row], + "missing-tokenizer-for-test", + model_id="accounts/fireworks/models/kimi-k2p5-vl", + visual=True, + ) + + extra = row.execution_metadata.extra or {} + validation_summary = extra["validation_summary"] + validation_checks = extra["validation_checks"] + full_episode = extra["full_episode"] + + assert validation_summary["target"] == "kimi-k2.5-vl" + assert validation_summary["passed"] is True + assert validation_summary["failing_checks"] == [] + assert validation_summary["image_counts"] == [1, 2] + assert len(full_episode["token_ids"]) == len(full_episode["mask"]) == len(full_episode["logprobs"]) + assert full_episode["mask"][3] == 1 + assert full_episode["logprobs"][3] is None + assert full_episode["logprobs"][4] == -0.1 + assert full_episode["mask"][5] == 1 + assert full_episode["logprobs"][5] is None + assert any(check["name"] == "image_counts_increment_per_turn" and check["status"] == "pass" for check in validation_checks) + assert any( + check["name"] == "kimi_instant_prompt_contains_empty_think_block" and check["status"] == "pass" + for check in validation_checks + ) + + +def test_enrich_rows_flags_broken_image_count_validation(): + row = _build_visual_row(row_id="failing", image_counts=[1, 1]) + + enrich_rows( + [row], + "missing-tokenizer-for-test", + model_id="accounts/fireworks/models/kimi-k2p5-vl", + visual=True, + ) + + extra = row.execution_metadata.extra or {} + validation_summary = extra["validation_summary"] + + assert validation_summary["passed"] is False + assert "image_counts_increment_per_turn" in validation_summary["failing_checks"] + + +def test_debug_report_renders_validation_section(): + row = _build_visual_row(row_id="report_row", image_counts=[1, 2]) + + enrich_rows( + [row], + "missing-tokenizer-for-test", + model_id="accounts/fireworks/models/kimi-k2p5-vl", + visual=True, + ) + + report_html = build_debug_report_html([row]) + + assert "Validation Checks" in report_html + assert "kimi-k2.5-vl" in report_html + assert "image_counts_increment_per_turn" in report_html diff --git a/training/tests/unit/test_frozen_lake_visual_rollout.py b/training/tests/unit/test_frozen_lake_visual_rollout.py new file mode 100644 index 00000000..b8a0809d --- /dev/null +++ b/training/tests/unit/test_frozen_lake_visual_rollout.py @@ -0,0 +1,320 @@ +from __future__ import annotations + +import asyncio + +import pytest + +from eval_protocol.models import EvaluationRow, InputMetadata +from eval_protocol.pytest.types import RolloutProcessorConfig + +from training.examples.frozen_lake.frozen_lake_rollout import ( + FireworksV1ImageCompletionsClient, + FrozenLakeToolRolloutProcessor, + _build_visual_user_prompt, + build_frozen_lake_tool_call_parser, +) +from training.examples.frozen_lake.frozen_lake_schema import FROZEN_LAKE_TOOLS + + +class _FakeImageClient: + requested_prompt_ids: list[list[int]] = [] + requested_image_counts: list[int] = [] + requested_prompt_texts: list[str] = [] + + def __init__(self, **_: object) -> None: + self._call_count = 0 + + def build_prompt_token_ids(self, *, messages, tools): + assert tools, "visual rollout should still pass tool specs into prompt construction" + assert messages[-1]["role"] == "user" + assert isinstance(messages[-1]["content"], list) + return [10, 11, 12] + + def decode_token_ids(self, *, token_ids): + normalized = list(token_ids) + if normalized == [10, 11, 12]: + return "prompt:initial" + if normalized == [91, 92]: + return "suffix:tool" + return f"prompt:{normalized}" + + def build_prompt_text(self, *, messages, tools): + assert tools, "visual rollout should still pass tool specs into prompt construction" + assert messages[-1]["role"] == "user" + return "prompt:initial" + + def encode_assistant_turn_suffix(self): + return [90] + + def assistant_turn_suffix_text(self): + return "<|im_end|>" + + def build_tool_response_suffix_token_ids(self, *, tool_message): + assert tool_message["role"] == "tool" + assert isinstance(tool_message["content"], list) + return [91, 92] + + def build_tool_response_suffix_text(self, *, tool_message): + assert tool_message["role"] == "tool" + return "suffix:tool" + + async def create_completion_from_prompt_ids(self, *, prompt_token_ids, prompt_text=None, images, tools): + del tools + self._call_count += 1 + type(self).requested_prompt_ids.append(list(prompt_token_ids)) + type(self).requested_image_counts.append(len(images)) + type(self).requested_prompt_texts.append(str(prompt_text or "")) + + action = "RIGHT" if self._call_count == 1 else "DOWN" + completion_id = 100 + self._call_count + tool_call_id = f"tc_{self._call_count}" + return { + "choices": [ + { + "message": { + "role": "assistant", + "content": "", + "tool_calls": [ + { + "id": tool_call_id, + "type": "function", + "function": { + "name": "lake_move", + "arguments": f'{{"action":"{action}"}}', + }, + } + ], + }, + "finish_reason": "stop", + "raw_output": {}, + } + ], + "usage": { + "prompt_tokens": len(prompt_token_ids), + "completion_tokens": 1, + "total_tokens": len(prompt_token_ids) + 1, + }, + "prompt_ids": list(prompt_token_ids), + "prompt_text": f"prompt:{prompt_token_ids}", + "completion_ids": [completion_id], + "completion_text": f"action:{action}", + "completion_logprobs": [-0.1], + "finish_reason": "stop", + "raw_output": {}, + } + + async def close(self) -> None: + return None + + +class _CapturingImageClient(_FakeImageClient): + init_kwargs: list[dict[str, object]] = [] + + def __init__(self, **kwargs: object) -> None: + type(self).init_kwargs.append(dict(kwargs)) + super().__init__(**kwargs) + + +def test_visual_user_prompt_includes_text_observation_without_placeholder(): + rendered = _build_visual_user_prompt( + prompt_template="Inspect the image and choose one action.", + observation="Current state:\nSFFF", + default_prompt="unused", + ) + + assert "Inspect the image and choose one action." in rendered + assert "Current textual observation:" in rendered + assert "Current state:\nSFFF" in rendered + + +def test_frozen_lake_tool_call_parser_accepts_json_schema_output_with_suffix(): + parser = build_frozen_lake_tool_call_parser(model_id="accounts/fireworks/models/kimi-k2p5") + + parsed = parser( + '{\n"tool_calls":[{"name":"lake_move","arguments":{"action":"RIGHT"}}]\n}<|im_end|>', + [1, 2, 3], + None, + ) + + assert parsed["parser"] == "json_schema" + assert parsed["assistant_content"] == "" + assert parsed["parsed_tool_call"].name == "lake_move" + assert parsed["parsed_tool_call"].arguments == {"action": "RIGHT"} + + +def test_frozen_lake_tool_call_parser_accepts_kimi_native_output(): + parser = build_frozen_lake_tool_call_parser(model_id="accounts/fireworks/models/kimi-k2p5") + + parsed = parser( + '<|tool_call_begin|>functions.lake_move:0<|tool_call_argument_begin|>{"action":"DOWN"}<|tool_call_end|><|tool_calls_section_end|>', + [1, 2, 3], + None, + ) + + assert parsed["parsed_tool_call"].name == "lake_move" + assert parsed["parsed_tool_call"].arguments == {"action": "DOWN"} + + +def test_kimi_visual_prompt_includes_empty_think_block_when_thinking_disabled(): + client = FireworksV1ImageCompletionsClient( + model_id="accounts/fireworks/models/kimi-k2p5", + tokenizer_name_or_path="moonshotai/Kimi-K2.5", + enable_thinking=False, + ) + try: + messages = [ + {"role": "system", "content": "You are an RL policy for FrozenLake."}, + { + "role": "user", + "content": [ + {"type": "image_url", "image_url": {"url": "data:image/png;base64,AAAA"}}, + {"type": "text", "text": "obs"}, + ], + }, + ] + prompt_text = client.build_prompt_text(messages=messages, tools=list(FROZEN_LAKE_TOOLS)) + prompt_ids = client.build_prompt_token_ids(messages=messages, tools=list(FROZEN_LAKE_TOOLS)) + decoded_prompt = client.decode_token_ids(token_ids=prompt_ids) + + assert prompt_text.endswith("") + assert "" in decoded_prompt + assert "" in decoded_prompt + assert decoded_prompt.rstrip().endswith("
    ") + finally: + asyncio.run(client.close()) + + +def test_kimi_visual_tool_suffix_includes_empty_think_block_when_thinking_disabled(): + client = FireworksV1ImageCompletionsClient( + model_id="accounts/fireworks/models/kimi-k2p5", + tokenizer_name_or_path="moonshotai/Kimi-K2.5", + enable_thinking=False, + ) + try: + tool_message = { + "role": "tool", + "name": "lake_move", + "tool_call_id": "functions.lake_move:0", + "content": [{"type": "image_url", "image_url": {"url": "data:image/png;base64,AAAA"}}], + } + suffix_text = client.build_tool_response_suffix_text(tool_message=tool_message) + suffix_ids = client.build_tool_response_suffix_token_ids(tool_message=tool_message) + decoded_suffix = client.decode_token_ids(token_ids=suffix_ids) + + assert suffix_text.endswith("") + assert "" in decoded_suffix + assert "" in decoded_suffix + assert decoded_suffix.rstrip().endswith("
    ") + finally: + asyncio.run(client.close()) + + +@pytest.mark.asyncio +async def test_visual_rollout_preserves_prior_completion_tokens(monkeypatch): + _FakeImageClient.requested_prompt_ids = [] + _FakeImageClient.requested_image_counts = [] + _FakeImageClient.requested_prompt_texts = [] + monkeypatch.setattr( + "training.examples.frozen_lake.frozen_lake_rollout.FireworksV1ImageCompletionsClient", + _FakeImageClient, + ) + + processor = FrozenLakeToolRolloutProcessor( + model_id="accounts/fireworks/models/kimi-k2p5", + tokenizer_name_or_path="moonshotai/Kimi-K2.5", + observation_mode="image", + logprobs=True, + ) + row = EvaluationRow( + input_metadata=InputMetadata( + row_id="visual_seed", + dataset_info={"environment_context": {"desc": ["SF", "FG"]}}, + ) + ) + config = RolloutProcessorConfig( + completion_params={"model": "accounts/fireworks/models/kimi-k2p5"}, + mcp_config_path="", + steps=4, + semaphore=asyncio.Semaphore(1), + logger=None, + ) + + [task] = processor([row], config) + result = await task + + extra = result.execution_metadata.extra or {} + token_turn_traces = extra["token_turn_traces"] + + assert len(token_turn_traces) == 2 + assert token_turn_traces[0]["prompt_ids"] == [10, 11, 12] + assert token_turn_traces[0]["completion_ids"] == [163595, 101, 90] + assert token_turn_traces[1]["prompt_ids"] == [10, 11, 12, 163595, 101, 90, 91, 92] + assert token_turn_traces[1]["completion_ids"] == [163595, 102, 90] + + assert _FakeImageClient.requested_prompt_ids == [ + [10, 11, 12, 163595], + [10, 11, 12, 163595, 101, 90, 91, 92, 163595], + ] + assert _FakeImageClient.requested_prompt_texts == [ + "prompt:initial<|tool_calls_section_begin|>", + "prompt:initial<|tool_calls_section_begin|>action:RIGHT<|im_end|>suffix:tool<|tool_calls_section_begin|>", + ] + assert _FakeImageClient.requested_image_counts == [1, 2] + assert extra["model_request_traces"][0]["assistant_turn_len"] == 3 + assert extra["model_request_traces"][1]["assistant_turn_len"] == 3 + assert extra["observation_mode"] == "image" + assert extra["tool_call_generation_mode"] == "prompt_only" + assert [message.role for message in result.messages] == [ + "system", + "user", + "assistant", + "tool", + "assistant", + "tool", + ] + assert str(result.messages[2].content).startswith("action:RIGHT") + assert isinstance(result.messages[1].content, list) + assert result.messages[1].content[0]["type"] == "image_url" + assert isinstance(result.messages[3].content, list) + assert result.messages[3].content[0]["type"] == "image_url" + + +@pytest.mark.asyncio +async def test_kimi_visual_rollout_keeps_raw_prompt_only_generation(monkeypatch): + _CapturingImageClient.init_kwargs = [] + monkeypatch.setattr( + "training.examples.frozen_lake.frozen_lake_rollout.FireworksV1ImageCompletionsClient", + _CapturingImageClient, + ) + + processor = FrozenLakeToolRolloutProcessor( + model_id="accounts/fireworks/models/kimi-k2p5", + tokenizer_name_or_path="moonshotai/Kimi-K2.5", + observation_mode="image", + logprobs=True, + ) + row = EvaluationRow( + input_metadata=InputMetadata( + row_id="visual_seed_json_schema", + dataset_info={"environment_context": {"desc": ["SF", "FG"]}}, + ) + ) + config = RolloutProcessorConfig( + completion_params={"model": "accounts/fireworks/models/kimi-k2p5"}, + mcp_config_path="", + steps=2, + semaphore=asyncio.Semaphore(1), + logger=None, + ) + + [task] = processor([row], config) + result = await task + + init_kwargs = _CapturingImageClient.init_kwargs[0] + request_params = init_kwargs["request_params"] + assert isinstance(request_params, dict) + assert request_params["thinking"] == {"type": "disabled"} + assert "response_format" not in request_params + assert "logit_bias" not in request_params + assert init_kwargs["max_tokens"] == 256 + assert (result.execution_metadata.extra or {})["tool_call_generation_mode"] == "prompt_only" From 4b37d34f1b4771b01a35cb1ca61567f5d7463f91 Mon Sep 17 00:00:00 2001 From: Benny Chen Date: Fri, 6 Mar 2026 17:15:13 -0800 Subject: [PATCH 2/6] chore: require eval-protocol 0.3.22 --- training/pyproject.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/training/pyproject.toml b/training/pyproject.toml index 7fcb7fed..be2d89b3 100644 --- a/training/pyproject.toml +++ b/training/pyproject.toml @@ -9,7 +9,7 @@ requires-python = ">=3.11" dependencies = [ "fireworks-ai>=1.0.0a36,<2", "tinker-cookbook>=0.1.0", - "eval-protocol>=0.3.21", + "eval-protocol>=0.3.22", "tqdm", "torch", "datasets", From 9297143a9f22640ebe72bea7ebef7b249a40e26f Mon Sep 17 00:00:00 2001 From: Benny Chen Date: Fri, 6 Mar 2026 17:51:00 -0800 Subject: [PATCH 3/6] feat: share training rendering and add smoke CI --- .github/workflows/training-ci.yml | 96 ++++++ training/examples/frozen_lake/test_masking.py | 16 + .../examples/frozen_lake/train_frozen_lake.py | 24 +- training/pyproject.toml | 5 + training/recipes/dpo_loop.py | 79 +++-- training/recipes/orpo_loop.py | 79 ++--- training/recipes/rl_loop.py | 47 ++- training/recipes/sft_loop.py | 53 ++- training/tests/smoke_test/conftest.py | 75 +++++ training/tests/smoke_test/test_dpo_smoke.py | 75 +++++ training/tests/smoke_test/test_grpo_smoke.py | 62 +--- training/tests/smoke_test/test_sft_smoke.py | 64 ++++ training/tests/test_smoke_imports.py | 2 +- .../tests/unit/test_supervised_rendering.py | 163 +++++++++ training/utils/__init__.py | 28 ++ training/utils/data.py | 13 + training/utils/losses.py | 56 ++++ training/utils/supervised.py | 317 ++++++++++++++++++ 18 files changed, 1064 insertions(+), 190 deletions(-) create mode 100644 .github/workflows/training-ci.yml create mode 100644 training/tests/smoke_test/conftest.py create mode 100644 training/tests/smoke_test/test_dpo_smoke.py create mode 100644 training/tests/smoke_test/test_sft_smoke.py create mode 100644 training/tests/unit/test_supervised_rendering.py create mode 100644 training/utils/supervised.py diff --git a/.github/workflows/training-ci.yml b/.github/workflows/training-ci.yml new file mode 100644 index 00000000..6f6e2e18 --- /dev/null +++ b/.github/workflows/training-ci.yml @@ -0,0 +1,96 @@ +name: Training CI + +on: + pull_request: + paths: + - "training/**" + - ".github/workflows/training-ci.yml" + push: + branches: + - main + paths: + - "training/**" + - ".github/workflows/training-ci.yml" + workflow_dispatch: + +permissions: + contents: read + +concurrency: + group: training-ci-${{ github.ref }} + cancel-in-progress: true + +jobs: + unit: + name: Unit And Import Tests + runs-on: ubuntu-latest + timeout-minutes: 20 + defaults: + run: + working-directory: training + steps: + - name: Checkout + uses: actions/checkout@v4 + + - name: Set Up Python + uses: actions/setup-python@v5 + with: + python-version: "3.11" + cache: "pip" + cache-dependency-path: training/pyproject.toml + + - name: Install Dependencies + run: | + python -m pip install --upgrade pip + python -m pip install -e '.[dev]' + + - name: Run Unit Tests + run: | + pytest -q tests/unit tests/test_smoke_imports.py examples/frozen_lake/test_masking.py + + qwen3-4b-smoke: + name: Qwen3-4B Smoke (${{ matrix.test_target }}) + needs: unit + runs-on: ubuntu-latest + timeout-minutes: 180 + strategy: + fail-fast: false + max-parallel: 1 + matrix: + test_target: + - tests/smoke_test/test_sft_smoke.py + - tests/smoke_test/test_dpo_smoke.py + - tests/smoke_test/test_grpo_smoke.py + defaults: + run: + working-directory: training + env: + FIREWORKS_API_KEY: ${{ secrets.FIREWORKS_API_KEY }} + FIREWORKS_ACCOUNT_ID: ${{ secrets.FIREWORKS_ACCOUNT_ID }} + FIREWORKS_BASE_URL: ${{ vars.FIREWORKS_BASE_URL || 'https://dev.api.fireworks.ai' }} + FIREWORKS_INFERENCE_URL: ${{ vars.FIREWORKS_INFERENCE_URL || vars.FIREWORKS_BASE_URL || 'https://dev.api.fireworks.ai' }} + FIREWORKS_HOTLOAD_API_URL: ${{ vars.FIREWORKS_HOTLOAD_API_URL || vars.FIREWORKS_BASE_URL || 'https://dev.api.fireworks.ai' }} + FIREWORKS_GATEWAY_SECRET: ${{ secrets.FIREWORKS_GATEWAY_SECRET }} + FIREWORKS_CUSTOM_IMAGE_TAG: ${{ vars.FIREWORKS_CUSTOM_IMAGE_TAG }} + FIREWORKS_SMOKE_BASE_MODEL: ${{ vars.FIREWORKS_SMOKE_BASE_MODEL || 'accounts/fireworks/models/qwen3-4b' }} + FIREWORKS_SMOKE_TOKENIZER_MODEL: ${{ vars.FIREWORKS_SMOKE_TOKENIZER_MODEL || 'Qwen/Qwen3-4B' }} + FIREWORKS_SMOKE_TRAINING_SHAPE: ${{ vars.FIREWORKS_SMOKE_TRAINING_SHAPE || 'ts-qwen3-4b-smoke-v1' }} + steps: + - name: Checkout + uses: actions/checkout@v4 + + - name: Set Up Python + uses: actions/setup-python@v5 + with: + python-version: "3.11" + cache: "pip" + cache-dependency-path: training/pyproject.toml + + - name: Install Dependencies + run: | + python -m pip install --upgrade pip + python -m pip install -e '.[dev]' + + - name: Run Smoke Test + run: | + pytest -q -s ${{ matrix.test_target }} diff --git a/training/examples/frozen_lake/test_masking.py b/training/examples/frozen_lake/test_masking.py index 7e068fad..47185446 100644 --- a/training/examples/frozen_lake/test_masking.py +++ b/training/examples/frozen_lake/test_masking.py @@ -18,6 +18,7 @@ build_ui_token_mask, compute_model_output_spans, ) +from training.utils.supervised import build_datum_from_token_mask def _make_traces(turns: list[dict]) -> tuple[list[dict], list[dict]]: @@ -209,3 +210,18 @@ def test_kimi_style_mask_includes_prefill_and_im_end_tokens(): train_mask = build_training_loss_mask(spans, 10) assert train_mask == [0.0, 0.0, 1.0, 1.0, 1.0, 0.0, 0.0, 1.0, 1.0, 1.0] + + +def test_shared_weighted_datum_matches_training_loss_mask(): + """The shared datum helper should use the exact same shifted mask as training.""" + ttt, mrt = _make_traces(KIMI_STYLE_MULTI_TURN) + spans = compute_model_output_spans(ttt, mrt) + + full_ids = list(ttt[-1]["prompt_ids"]) + list(ttt[-1]["completion_ids"]) + ui_mask = build_ui_token_mask(spans, len(full_ids)) + train_mask = build_training_loss_mask(spans, len(full_ids) - 1) + + rendered = build_datum_from_token_mask(full_ids, ui_mask, include_loss_mask=True) + + assert rendered.datum.loss_fn_inputs["weights"].data == train_mask + assert rendered.datum.loss_fn_inputs["loss_mask"].data == train_mask diff --git a/training/examples/frozen_lake/train_frozen_lake.py b/training/examples/frozen_lake/train_frozen_lake.py index 1884932d..9dcd023c 100644 --- a/training/examples/frozen_lake/train_frozen_lake.py +++ b/training/examples/frozen_lake/train_frozen_lake.py @@ -42,7 +42,7 @@ ) from training.examples.frozen_lake.masking import ( compute_model_output_spans, - build_training_loss_mask, + build_ui_token_mask, ) from fireworks.training.sdk import DeploymentManager, TrainerJobManager @@ -64,6 +64,7 @@ setup_deployment, create_trainer_job, compute_advantages, + build_datum_from_token_mask, ) from training.utils.rl import PromptGroup from training.utils.rl.train import MinibatchTrainFns, run_rl_loop @@ -245,23 +246,16 @@ def evaluation_row_to_training_data( # prompt_len = first turn's prompt length (system + user message, before any model output) first_prompt_len = len([int(x) for x in (token_turn_traces[0].get("prompt_ids") or [])]) - model_input_len = len(full_tokens) - 1 - model_request_traces = extra.get("model_request_traces") or [] spans = compute_model_output_spans(token_turn_traces, model_request_traces) - loss_mask = build_training_loss_mask(spans, model_input_len) - - datum = tinker.Datum( - model_input=tinker.ModelInput.from_ints(full_tokens[:-1]), - loss_fn_inputs={ - "target_tokens": tinker.TensorData( - data=full_tokens[1:], dtype="int64", shape=[model_input_len] - ), - "loss_mask": tinker.TensorData( - data=loss_mask, dtype="float32", shape=[model_input_len] - ), - }, + token_mask = build_ui_token_mask(spans, len(full_tokens)) + rendered = build_datum_from_token_mask( + full_tokens, + token_mask, + include_loss_mask=True, ) + datum = rendered.datum + model_input_len = len(rendered.token_ids) - 1 # Reconstruct inference logprobs aligned to the full sequence. # Pad prompt positions with 0.0, then fill in per-turn completion logprobs. diff --git a/training/pyproject.toml b/training/pyproject.toml index 182637f4..5b8ed151 100644 --- a/training/pyproject.toml +++ b/training/pyproject.toml @@ -24,6 +24,7 @@ dependencies = [ [project.optional-dependencies] dev = [ "pytest", + "pytest-timeout", "math-verify", ] @@ -33,3 +34,7 @@ include = ["training*"] [tool.pytest.ini_options] testpaths = ["training/tests"] +markers = [ + "e2e: tests that hit remote Fireworks infrastructure", + "timeout: per-test timeout budget", +] diff --git a/training/recipes/dpo_loop.py b/training/recipes/dpo_loop.py index 4695f65a..5d92ee84 100644 --- a/training/recipes/dpo_loop.py +++ b/training/recipes/dpo_loop.py @@ -44,7 +44,6 @@ ReconnectableClient, wandb_log, setup_wandb, - extract_text, setup_resume, wandb_finish, validate_config, @@ -53,7 +52,9 @@ setup_deployment, create_trainer_job, load_preference_dataset, - find_common_prefix_length, + build_renderer, + render_preference_pair, + resolve_renderer_name, ) from fireworks.training.sdk.deployment import DEFAULT_DELTA_COMPRESSION from fireworks.training.sdk.weight_syncer import WeightSyncer @@ -98,6 +99,7 @@ class Config: base_model: str = "accounts/fireworks/models/qwen3-8b" dataset: str = "" tokenizer_model: str = "" # HuggingFace model name for client-side tokenization + renderer_name: str = "" beta: float = 0.1 learning_rate: float = 1e-5 @@ -129,44 +131,35 @@ class Config: def _tokenize_pair( example: dict[str, Any], tokenizer: Any, + renderer: Any, max_seq_len: int, ) -> dict[str, Any] | None: """Tokenize a single preference pair. Returns None if invalid, 'filtered' if too long.""" - chosen_text = extract_text(example["chosen"]) - rejected_text = extract_text(example["rejected"]) - if not chosen_text or not rejected_text: + pair = render_preference_pair( + example["chosen"], + example["rejected"], + renderer=renderer, + tokenizer=tokenizer, + ) + if pair is None: return None - - chosen_tokens = tokenizer.encode(chosen_text) - rejected_tokens = tokenizer.encode(rejected_text) - if len(chosen_tokens) > max_seq_len or len(rejected_tokens) > max_seq_len: + if len(pair.chosen_tokens) > max_seq_len or len(pair.rejected_tokens) > max_seq_len: return "filtered" - if len(chosen_tokens) < 2 or len(rejected_tokens) < 2: - return None - prompt_len = find_common_prefix_length(chosen_tokens, rejected_tokens) return { - "chosen_tokens": chosen_tokens, - "rejected_tokens": rejected_tokens, - "prompt_len": prompt_len, + "chosen_tokens": pair.chosen_tokens, + "rejected_tokens": pair.rejected_tokens, + "response_start": pair.response_start, + "chosen_datum": pair.chosen_datum, + "rejected_datum": pair.rejected_datum, } -def _make_datum(tokens: list[int]) -> tinker.Datum: - return tinker.Datum( - model_input=tinker.ModelInput.from_ints(tokens[:-1]), - loss_fn_inputs={ - "target_tokens": tinker.TensorData( - data=tokens[1:], dtype="int64", shape=[len(tokens) - 1] - ) - }, - ) - - async def _cache_ref_logprobs( raw_data: list[dict[str, Any]], reference: ReconnectableClient, tokenizer: Any, + renderer: Any, max_seq_len: int, concurrency: int = 16, batch_size: int = 1, @@ -181,7 +174,7 @@ async def _cache_ref_logprobs( tokenized: list[tuple[int, dict[str, Any]]] = [] filtered_count = 0 for i, example in enumerate(raw_data): - result = _tokenize_pair(example, tokenizer, max_seq_len) + result = _tokenize_pair(example, tokenizer, renderer, max_seq_len) if result == "filtered": filtered_count += 1 elif result is not None: @@ -198,8 +191,8 @@ async def _process_batch( ) -> list[tuple[int, dict[str, Any]]]: datums: list[tinker.Datum] = [] for _, pair_data in batch: - datums.append(_make_datum(pair_data["chosen_tokens"])) - datums.append(_make_datum(pair_data["rejected_tokens"])) + datums.append(pair_data["chosen_datum"]) + datums.append(pair_data["rejected_datum"]) async with semaphore: fwd = await asyncio.to_thread( @@ -211,9 +204,11 @@ async def _process_batch( results.append((idx, { "chosen_tokens": pair_data["chosen_tokens"], "rejected_tokens": pair_data["rejected_tokens"], + "chosen_datum": pair_data["chosen_datum"], + "rejected_datum": pair_data["rejected_datum"], "ref_chosen": fwd.loss_fn_outputs[2 * j]["logprobs"].data, "ref_rejected": fwd.loss_fn_outputs[2 * j + 1]["logprobs"].data, - "prompt_len": pair_data["prompt_len"], + "response_start": pair_data["response_start"], })) return results @@ -250,12 +245,11 @@ def _flush_batch( response_starts: list[int] = [] for cached in batch_pairs: - response_start = max(0, cached["prompt_len"] - 1) - datums.append(_make_datum(cached["chosen_tokens"])) - datums.append(_make_datum(cached["rejected_tokens"])) + datums.append(cached["chosen_datum"]) + datums.append(cached["rejected_datum"]) ref_chosen_list.append(cached["ref_chosen"]) ref_rejected_list.append(cached["ref_rejected"]) - response_starts.append(response_start) + response_starts.append(cached["response_start"]) loss_fn = make_batch_dpo_loss_fn( ref_chosen_list, ref_rejected_list, response_starts, beta, @@ -423,6 +417,14 @@ def _signal_handler(signum, frame): if cfg.deployment.deployment_id: setup_deployment(deploy_mgr, cfg.deployment, cfg.base_model, cfg.infra) + profile = None + if cfg.infra.training_shape_id: + profile = rlor_mgr.resolve_training_profile(cfg.infra.training_shape_id) + + if profile and cfg.max_seq_len is None: + cfg.max_seq_len = profile.max_supported_context_length + logger.info("max_seq_len from training shape: %d", cfg.max_seq_len) + if cfg.max_seq_len is None: raise ValueError( "max_seq_len is required. Set it in Config, or use a training shape " @@ -445,6 +447,7 @@ def _signal_handler(signum, frame): rlor_mgr, base_model=cfg.base_model, infra=cfg.infra, + profile=profile, lora_rank=cfg.lora_rank, max_seq_len=cfg.max_seq_len, learning_rate=cfg.learning_rate, @@ -456,6 +459,7 @@ def _signal_handler(signum, frame): rlor_mgr, base_model=cfg.base_model, infra=cfg.infra, + profile=profile, lora_rank=cfg.lora_rank, max_seq_len=cfg.max_seq_len, learning_rate=cfg.learning_rate, @@ -489,6 +493,11 @@ def _signal_handler(signum, frame): import transformers tokenizer = transformers.AutoTokenizer.from_pretrained(cfg.tokenizer_model, trust_remote_code=True) + renderer = build_renderer(tokenizer, cfg.tokenizer_model, cfg.renderer_name) + logger.info( + "Using renderer=%s for preference tokenization", + resolve_renderer_name(cfg.tokenizer_model, cfg.renderer_name), + ) raw_data = load_preference_dataset(cfg.dataset, cfg.max_pairs) if not raw_data: @@ -497,7 +506,7 @@ def _signal_handler(signum, frame): logger.info("Computing reference logprobs for %d pairs...", len(raw_data)) ref_cache, filtered_count = asyncio.run( _cache_ref_logprobs( - raw_data, reference, tokenizer, cfg.max_seq_len, + raw_data, reference, tokenizer, renderer, cfg.max_seq_len, concurrency=cfg.ref_cache_concurrency, batch_size=cfg.ref_cache_batch_size, ) diff --git a/training/recipes/orpo_loop.py b/training/recipes/orpo_loop.py index 24320d44..f2a11533 100644 --- a/training/recipes/orpo_loop.py +++ b/training/recipes/orpo_loop.py @@ -59,7 +59,9 @@ make_orpo_loss_fn, create_trainer_job, load_preference_dataset, - find_common_prefix_length, + build_renderer, + render_preference_pair, + resolve_renderer_name, ) logger = logging.getLogger(__name__) @@ -74,6 +76,7 @@ class Config: base_model: str = "accounts/fireworks/models/qwen3-235b-a22b-instruct-2507" dataset: str = "" tokenizer_model: str = "" + renderer_name: str = "" orpo_lambda: float = 1.0 learning_rate: float = 1e-5 @@ -143,6 +146,14 @@ def _signal_handler(signum, frame): api_key=api_key, account_id=account, base_url=base_url ) + profile = None + if cfg.infra.training_shape_id: + profile = rlor_mgr.resolve_training_profile(cfg.infra.training_shape_id) + + if profile and cfg.max_seq_len is None: + cfg.max_seq_len = profile.max_supported_context_length + logger.info("max_seq_len from training shape: %d", cfg.max_seq_len) + if cfg.max_seq_len is None: raise ValueError( "max_seq_len is required. Set it in Config, or use a training shape " @@ -153,6 +164,7 @@ def _signal_handler(signum, frame): rlor_mgr, base_model=cfg.base_model, infra=cfg.infra, + profile=profile, lora_rank=cfg.lora_rank, max_seq_len=cfg.max_seq_len, learning_rate=cfg.learning_rate, @@ -173,6 +185,11 @@ def _signal_handler(signum, frame): tokenizer = transformers.AutoTokenizer.from_pretrained( cfg.tokenizer_model, trust_remote_code=True ) + renderer = build_renderer(tokenizer, cfg.tokenizer_model, cfg.renderer_name) + logger.info( + "Using renderer=%s for preference tokenization", + resolve_renderer_name(cfg.tokenizer_model, cfg.renderer_name), + ) raw_data = load_preference_dataset(cfg.dataset, cfg.max_pairs) if not raw_data: @@ -183,33 +200,28 @@ def _signal_handler(signum, frame): filtered_count = 0 for example in raw_data: - chosen_msgs = example["chosen"].get("messages", []) - rejected_msgs = example["rejected"].get("messages", []) - if not chosen_msgs or not rejected_msgs: - continue - - chosen_tokens = tokenizer.apply_chat_template( - chosen_msgs, tokenize=True, return_dict=False - ) - rejected_tokens = tokenizer.apply_chat_template( - rejected_msgs, tokenize=True, return_dict=False + pair = render_preference_pair( + example["chosen"], + example["rejected"], + renderer=renderer, + tokenizer=tokenizer, ) + if pair is None: + continue if ( - len(chosen_tokens) > cfg.max_seq_len - or len(rejected_tokens) > cfg.max_seq_len + len(pair.chosen_tokens) > cfg.max_seq_len + or len(pair.rejected_tokens) > cfg.max_seq_len ): filtered_count += 1 continue - if len(chosen_tokens) < 2 or len(rejected_tokens) < 2: - continue - - prompt_len = find_common_prefix_length(chosen_tokens, rejected_tokens) pair_cache.append( { - "chosen_tokens": chosen_tokens, - "rejected_tokens": rejected_tokens, - "prompt_len": prompt_len, + "chosen_tokens": pair.chosen_tokens, + "rejected_tokens": pair.rejected_tokens, + "response_start": pair.response_start, + "chosen_datum": pair.chosen_datum, + "rejected_datum": pair.rejected_datum, } ) @@ -246,32 +258,9 @@ def _signal_handler(signum, frame): for pair in pair_cache: chosen_tokens = pair["chosen_tokens"] rejected_tokens = pair["rejected_tokens"] - response_start = max(0, pair["prompt_len"] - 1) - - chosen_datum = tinker.Datum( - model_input=tinker.ModelInput.from_ints(chosen_tokens[:-1]), - loss_fn_inputs={ - "target_tokens": tinker.TensorData( - data=chosen_tokens[1:], - dtype="int64", - shape=[len(chosen_tokens) - 1], - ) - }, - ) - rejected_datum = tinker.Datum( - model_input=tinker.ModelInput.from_ints(rejected_tokens[:-1]), - loss_fn_inputs={ - "target_tokens": tinker.TensorData( - data=rejected_tokens[1:], - dtype="int64", - shape=[len(rejected_tokens) - 1], - ) - }, - ) - - loss_fn = make_orpo_loss_fn(response_start, cfg.orpo_lambda) + loss_fn = make_orpo_loss_fn(pair["response_start"], cfg.orpo_lambda) result = client.forward_backward_custom( - [chosen_datum, rejected_datum], loss_fn + [pair["chosen_datum"], pair["rejected_datum"]], loss_fn ).result() metrics = result.metrics diff --git a/training/recipes/rl_loop.py b/training/recipes/rl_loop.py index 825fa647..792c1b02 100644 --- a/training/recipes/rl_loop.py +++ b/training/recipes/rl_loop.py @@ -47,6 +47,7 @@ compute_advantages, create_trainer_job, load_jsonl_dataset, + prepare_sampling_messages, ) from fireworks.training.sdk.deployment import DeploymentSampler from training.utils.rl import PromptGroup @@ -57,7 +58,7 @@ from training.utils.rl.dapo import DAPOConfig from training.utils.rl.gspo import GSPOConfig from training.utils.rl.cispo import CISPOConfig -from training.utils.rl.train import TrainStepFns, run_rl_loop +from training.utils.rl.train import MinibatchTrainFns, run_rl_loop from training.utils.rl.losses import build_loss_fn, combine_prompt_groups from training.utils.rl.metrics import compute_step_metrics from training.utils.rl.router_replay import build_r3_routing_matrices @@ -382,7 +383,7 @@ def _signal_handler(signum, frame): async def sample_one_prompt(row: dict) -> PromptGroup | None: """Sample completions for one prompt and return a PromptGroup.""" messages = row.get("messages", []) - input_messages = [m for m in messages if m.get("role") != "assistant"] + input_messages = prepare_sampling_messages(messages) if not input_messages: return None @@ -485,30 +486,35 @@ def ref_forward(groups: list[PromptGroup]) -> None: ] idx += n - def train_step( - step: int, - prompt_groups: list[PromptGroup], - loop_stats: dict | None = None, - ) -> tuple[int, dict]: - """ref_forward + fwd_bwd + optim_step + hotload + metrics (1:1).""" + def fwd_bwd_one(prompt_groups: list[PromptGroup]): + """One minibatch forward/backward call after reference forward.""" + if not prompt_groups: + raise ValueError("fwd_bwd_one requires at least one prompt group") import time as _t - t0 = _t.time() - ref_forward(prompt_groups) - logger.info("[step %d] ref_forward: done (%.1fs)", step + 1, _t.time() - t0) - data, adv, ref_lp, prompt_lens, inf_lp = combine_prompt_groups(prompt_groups) t0 = _t.time() prox_fwd = policy.forward(data, "cross_entropy") prox_lp = [prox_fwd.loss_fn_outputs[i]["logprobs"].data for i in range(len(data))] - logger.info("[step %d] prox_forward: done (%.1fs)", step + 1, _t.time() - t0) + logger.info("prox_forward: done (%.1fs)", _t.time() - t0) t0 = _t.time() fwd_bwd_result = policy.forward_backward_custom( data, loss_builder(adv, ref_lp, prompt_lens, inf_lp, prox_lp), ) - logger.info("[step %d] fwd_bwd: done (%.1fs)", step + 1, _t.time() - t0) + logger.info("fwd_bwd: done (%.1fs)", _t.time() - t0) + return fwd_bwd_result + + def finish_step( + step: int, + prompt_groups: list[PromptGroup], + fwd_bwd_results: list, + n_accum: int, + loop_stats: dict | None = None, + ) -> tuple[int, dict]: + """optim_step + hotload + metrics after all minibatches in a step.""" + import time as _t t0 = _t.time() optim_result = policy.optim_step(adam_params) @@ -530,9 +536,9 @@ def train_step( metrics = compute_step_metrics( prompt_groups=prompt_groups, - fwd_bwd_results=[fwd_bwd_result], + fwd_bwd_results=fwd_bwd_results, optim_result=optim_result, - n_accum=1, + n_accum=n_accum, timing_metrics=flush_timing(), loop_stats=loop_stats, completions_per_prompt=completions_per_prompt, @@ -560,18 +566,23 @@ def _loop_metrics_callback(loop_metrics: dict) -> None: """Called by run_rl_loop after each train step with loop-level metrics.""" wandb_log(loop_metrics, step=loop_metrics.get("train/step", 0)) - train_fns = TrainStepFns(train_step=train_step) + train_fns = MinibatchTrainFns( + ref_forward_batch=ref_forward, + fwd_bwd_one=fwd_bwd_one, + finish_step=finish_step, + ) all_rows = dataset * cfg.epochs global_step = asyncio.run(run_rl_loop( sample_fns=(sample_one_prompt(row) for row in all_rows), - train_fns=train_fns, + minibatch_fns=train_fns, prompt_groups_per_step=prompt_groups_per_step, max_concurrent=cfg.max_concurrent, dynamic_filter_fn=should_accept, global_step=step_offset, metrics_callback=_loop_metrics_callback, + completions_per_prompt=completions_per_prompt, )) # -- Final checkpoint ---------------------------------------------------- diff --git a/training/recipes/sft_loop.py b/training/recipes/sft_loop.py index 78c57eae..b04e7bc8 100644 --- a/training/recipes/sft_loop.py +++ b/training/recipes/sft_loop.py @@ -42,7 +42,11 @@ validate_config, log_metrics_json, create_trainer_job, - make_batch_sft_loss_fn, + make_batch_weighted_sft_loss_fn, + build_renderer, + parse_train_on_what, + render_messages_to_datum, + resolve_renderer_name, ) from training.utils.timer import timer, flush_timing @@ -60,6 +64,8 @@ class Config: base_model: str = "accounts/fireworks/models/qwen3-8b" dataset: str = "" tokenizer_model: str = "" # HuggingFace model name for chat template, e.g. "Qwen/Qwen3-1.7B" + renderer_name: str = "" + train_on_what: str = "all_assistant_messages" learning_rate: float = 1e-4 epochs: int = 3 @@ -150,6 +156,13 @@ def _signal_handler(signum, frame): # -- Prepare data ------------------------------------------------------ try: tokenizer = transformers.AutoTokenizer.from_pretrained(cfg.tokenizer_model, trust_remote_code=True) + renderer = build_renderer(tokenizer, cfg.tokenizer_model, cfg.renderer_name) + train_on_what = parse_train_on_what(cfg.train_on_what) + logger.info( + "Using renderer=%s train_on_what=%s", + resolve_renderer_name(cfg.tokenizer_model, cfg.renderer_name), + train_on_what.value, + ) raw_data: List[Dict[str, Any]] = [] with open(cfg.dataset) as f: @@ -162,26 +175,23 @@ def _signal_handler(signum, frame): break logger.info("Loaded %d examples from %s", len(raw_data), cfg.dataset) - training_data: List[Dict[str, Any]] = [] + training_data: List[tinker.Datum] = [] filtered_count = 0 for row in raw_data: messages = row.get("messages", []) if not messages: continue - full_tokens = tokenizer.apply_chat_template(messages, tokenize=True, return_dict=False) - if len(full_tokens) > cfg.max_seq_len or len(full_tokens) < 2: + rendered = render_messages_to_datum( + messages, + renderer=renderer, + train_on_what=train_on_what, + ) + if len(rendered.token_ids) > cfg.max_seq_len or len(rendered.token_ids) < 2: filtered_count += 1 continue - prompt_messages = [m for m in messages if m.get("role") != "assistant"] - prompt_tokens = tokenizer.apply_chat_template( - prompt_messages, - tokenize=True, - add_generation_prompt=True, - return_dict=False, - ) - training_data.append({"tokens": full_tokens, "prompt_len": len(prompt_tokens)}) + training_data.append(rendered.datum) if filtered_count > 0: logger.info( @@ -206,24 +216,13 @@ def _signal_handler(signum, frame): agg_loss_sum = 0.0 agg_resp_tokens = 0 - def _create_datum(tokens: list[int]) -> tinker.Datum: - return tinker.Datum( - model_input=tinker.ModelInput.from_ints(tokens[:-1]), - loss_fn_inputs={ - "target_tokens": tinker.TensorData(data=tokens[1:], dtype="int64", shape=[len(tokens) - 1]), - }, - ) - - def _flush_batch(batch_buf: list[dict], step: int, accum: int) -> tuple[int, int]: + def _flush_batch(batch_buf: list[tinker.Datum], step: int, accum: int) -> tuple[int, int]: """Send a batch through forward_backward_custom and return (step, accum).""" nonlocal agg_loss_sum, agg_resp_tokens - datums = [_create_datum(ex["tokens"]) for ex in batch_buf] - prompt_counts = [ex["prompt_len"] for ex in batch_buf] - - loss_fn = make_batch_sft_loss_fn(prompt_counts) + loss_fn = make_batch_weighted_sft_loss_fn() with timer("fwd_bwd"): - result = client.forward_backward_custom(datums, loss_fn) + result = client.forward_backward_custom(batch_buf, loss_fn) fwd_metrics = result.metrics agg_loss_sum += fwd_metrics.get("ce_loss_sum", 0.0) @@ -271,7 +270,7 @@ def _flush_batch(batch_buf: list[dict], step: int, accum: int) -> tuple[int, int return step, accum for _epoch in range(cfg.epochs): - batch_buffer: list[dict] = [] + batch_buffer: list[tinker.Datum] = [] for ex in training_data: batch_buffer.append(ex) if len(batch_buffer) >= batch_size: diff --git a/training/tests/smoke_test/conftest.py b/training/tests/smoke_test/conftest.py new file mode 100644 index 00000000..4f343f16 --- /dev/null +++ b/training/tests/smoke_test/conftest.py @@ -0,0 +1,75 @@ +"""Shared fixtures for remote smoke tests on small Qwen3-4B shapes.""" + +from __future__ import annotations + +import os + +import pytest + +from fireworks.training.sdk.deployment import DeploymentManager +from fireworks.training.sdk.trainer import TrainerJobManager + +DEFAULT_SMOKE_BASE_MODEL = "accounts/fireworks/models/qwen3-4b" +DEFAULT_SMOKE_TOKENIZER_MODEL = "Qwen/Qwen3-4B" +DEFAULT_SMOKE_TRAINING_SHAPE = "ts-qwen3-4b-smoke-v1" +DEFAULT_SMOKE_BASE_URL = "https://dev.api.fireworks.ai" + + +def _get_env(name: str, default: str | None = None) -> str | None: + return os.environ.get(name, default) + + +@pytest.fixture(scope="session") +def smoke_base_model() -> str: + return _get_env("FIREWORKS_SMOKE_BASE_MODEL", DEFAULT_SMOKE_BASE_MODEL) + + +@pytest.fixture(scope="session") +def smoke_tokenizer_model() -> str: + return _get_env("FIREWORKS_SMOKE_TOKENIZER_MODEL", DEFAULT_SMOKE_TOKENIZER_MODEL) + + +@pytest.fixture(scope="session") +def smoke_training_shape() -> str: + return _get_env("FIREWORKS_SMOKE_TRAINING_SHAPE", DEFAULT_SMOKE_TRAINING_SHAPE) + + +@pytest.fixture(scope="session") +def smoke_custom_image_tag() -> str | None: + return _get_env("FIREWORKS_CUSTOM_IMAGE_TAG") + + +@pytest.fixture(scope="session") +def smoke_sdk_managers(): + api_key = _get_env("FIREWORKS_API_KEY") + if not api_key: + pytest.skip("FIREWORKS_API_KEY not set") + + account_id = _get_env("FIREWORKS_ACCOUNT_ID") + if not account_id: + pytest.skip("FIREWORKS_ACCOUNT_ID not set") + + base_url = _get_env("FIREWORKS_BASE_URL", DEFAULT_SMOKE_BASE_URL) + inference_url = _get_env("FIREWORKS_INFERENCE_URL", base_url) + hotload_api_url = _get_env("FIREWORKS_HOTLOAD_API_URL", base_url) + + additional_headers = {} + gateway_secret = _get_env("FIREWORKS_GATEWAY_SECRET") + if gateway_secret: + additional_headers["X-Fireworks-Gateway-Secret"] = gateway_secret + + rlor_mgr = TrainerJobManager( + api_key=api_key, + account_id=account_id, + base_url=base_url, + additional_headers=additional_headers or None, + ) + deploy_mgr = DeploymentManager( + api_key=api_key, + account_id=account_id, + base_url=base_url, + inference_url=inference_url, + hotload_api_url=hotload_api_url, + additional_headers=additional_headers or None, + ) + return rlor_mgr, deploy_mgr diff --git a/training/tests/smoke_test/test_dpo_smoke.py b/training/tests/smoke_test/test_dpo_smoke.py new file mode 100644 index 00000000..83278551 --- /dev/null +++ b/training/tests/smoke_test/test_dpo_smoke.py @@ -0,0 +1,75 @@ +"""Minimal DPO smoke test on Qwen3-4B.""" + +from __future__ import annotations + +import json +import os +import tempfile + +import pytest + + +def _make_preference_dataset(path: str, num_pairs: int = 4) -> None: + with open(path, "w") as f: + for i in range(num_pairs): + row = { + "chosen": { + "messages": [ + {"role": "user", "content": f"What is {i} plus {i}?"}, + {"role": "assistant", "content": f"The answer is {i + i}."}, + ] + }, + "rejected": { + "messages": [ + {"role": "user", "content": f"What is {i} plus {i}?"}, + {"role": "assistant", "content": f"I think it is {i * 3}."}, + ] + }, + } + f.write(json.dumps(row) + "\n") + + +@pytest.mark.e2e +@pytest.mark.timeout(3600) +def test_dpo_smoke( + smoke_sdk_managers, + smoke_base_model, + smoke_tokenizer_model, + smoke_training_shape, + smoke_custom_image_tag, +): + from training.recipes.dpo_loop import Config, main + from training.utils import DeployConfig, HotloadConfig, InfraConfig, WandBConfig + + rlor_mgr, deploy_mgr = smoke_sdk_managers + + with tempfile.NamedTemporaryFile(mode="w", suffix=".jsonl", delete=False) as f: + dataset_path = f.name + + try: + _make_preference_dataset(dataset_path, num_pairs=4) + config = Config( + base_model=smoke_base_model, + dataset=dataset_path, + tokenizer_model=smoke_tokenizer_model, + beta=0.1, + learning_rate=1e-5, + epochs=1, + batch_size=1, + grad_accum=1, + max_pairs=4, + infra=InfraConfig( + training_shape_id=smoke_training_shape, + skip_validations=True, + custom_image_tag=smoke_custom_image_tag, + ), + deployment=DeployConfig(), + hotload=HotloadConfig(hot_load_interval=0, dcp_save_interval=0), + wandb=WandBConfig(), + ) + + metrics = main(config, rlor_mgr=rlor_mgr, deploy_mgr=deploy_mgr) + assert isinstance(metrics, dict) + assert metrics["steps"] >= 2, f"Expected >= 2 steps, got {metrics['steps']}" + finally: + os.unlink(dataset_path) diff --git a/training/tests/smoke_test/test_grpo_smoke.py b/training/tests/smoke_test/test_grpo_smoke.py index b611567b..0bdfba40 100644 --- a/training/tests/smoke_test/test_grpo_smoke.py +++ b/training/tests/smoke_test/test_grpo_smoke.py @@ -11,7 +11,7 @@ FIREWORKS_BASE_URL (optional, defaults to https://dev.api.fireworks.ai) Usage: - pytest training/tests/e2e/smoke_test/test_grpo_smoke.py -v -s + pytest training/tests/smoke_test/test_grpo_smoke.py -v -s """ from __future__ import annotations @@ -23,20 +23,12 @@ import pytest -from fireworks.training.sdk.trainer import TrainerJobManager -from fireworks.training.sdk.deployment import DeploymentManager - logging.basicConfig( level=logging.INFO, format="%(asctime)s %(levelname)s %(name)s: %(message)s", force=True, ) -BASE_MODEL = "accounts/fireworks/models/qwen3-4b" -TOKENIZER_MODEL = "Qwen/Qwen3-4B" -TRAINING_SHAPE = "ts-qwen3-4b-smoke-v1" -DEFAULT_BASE_URL = "https://dev.api.fireworks.ai" - def _make_prompt_dataset(path: str, n: int = 4) -> None: with open(path, "w") as f: @@ -54,50 +46,21 @@ def _constant_reward(_completion: str, _row: dict) -> float: return 1.0 -def _get_sdk_managers(): - api_key = os.environ.get("FIREWORKS_API_KEY") - if not api_key: - pytest.skip("FIREWORKS_API_KEY not set") - - account_id = os.environ.get("FIREWORKS_ACCOUNT_ID") - if not account_id: - pytest.skip("FIREWORKS_ACCOUNT_ID not set") - - base_url = os.environ.get("FIREWORKS_BASE_URL", DEFAULT_BASE_URL) - inference_url = os.environ.get("FIREWORKS_INFERENCE_URL", base_url) - hotload_api_url = os.environ.get("FIREWORKS_HOTLOAD_API_URL", base_url) - - additional_headers = {} - gateway_secret = os.environ.get("FIREWORKS_GATEWAY_SECRET") - if gateway_secret: - additional_headers["X-Fireworks-Gateway-Secret"] = gateway_secret - - rlor_mgr = TrainerJobManager( - api_key=api_key, - account_id=account_id, - base_url=base_url, - additional_headers=additional_headers or None, - ) - deploy_mgr = DeploymentManager( - api_key=api_key, - account_id=account_id, - base_url=base_url, - inference_url=inference_url, - hotload_api_url=hotload_api_url, - additional_headers=additional_headers or None, - ) - return rlor_mgr, deploy_mgr - - @pytest.mark.e2e @pytest.mark.timeout(3600) -def test_grpo_smoke(): +def test_grpo_smoke( + smoke_sdk_managers, + smoke_base_model, + smoke_tokenizer_model, + smoke_training_shape, + smoke_custom_image_tag, +): """2-step GRPO on Qwen3-4B: train, hotload, train again, cleanup.""" from training.utils import InfraConfig, DeployConfig, HotloadConfig, WandBConfig from training.recipes.rl_loop import Config, main import training.recipes.rl_loop as rl_mod - rlor_mgr, deploy_mgr = _get_sdk_managers() + rlor_mgr, deploy_mgr = smoke_sdk_managers rl_mod.reward_fn = _constant_reward @@ -108,7 +71,7 @@ def test_grpo_smoke(): _make_prompt_dataset(dataset_path, n=4) config = Config( - base_model=BASE_MODEL, + base_model=smoke_base_model, dataset=dataset_path, learning_rate=1e-4, kl_beta=0, @@ -118,11 +81,12 @@ def test_grpo_smoke(): max_rows=2, epochs=1, infra=InfraConfig( - training_shape_id=TRAINING_SHAPE, + training_shape_id=smoke_training_shape, skip_validations=True, + custom_image_tag=smoke_custom_image_tag, ), deployment=DeployConfig( - tokenizer_model=TOKENIZER_MODEL, + tokenizer_model=smoke_tokenizer_model, ), hotload=HotloadConfig( hot_load_interval=1, diff --git a/training/tests/smoke_test/test_sft_smoke.py b/training/tests/smoke_test/test_sft_smoke.py new file mode 100644 index 00000000..509f7d70 --- /dev/null +++ b/training/tests/smoke_test/test_sft_smoke.py @@ -0,0 +1,64 @@ +"""Minimal SFT smoke test on Qwen3-4B.""" + +from __future__ import annotations + +import json +import os +import tempfile + +import pytest + + +def _make_chat_dataset(path: str, num_examples: int = 4) -> None: + with open(path, "w") as f: + for i in range(num_examples): + row = { + "messages": [ + {"role": "user", "content": f"What is {i} plus {i}?"}, + {"role": "assistant", "content": f"The answer is {i + i}."}, + ] + } + f.write(json.dumps(row) + "\n") + + +@pytest.mark.e2e +@pytest.mark.timeout(3600) +def test_sft_smoke( + smoke_sdk_managers, + smoke_base_model, + smoke_tokenizer_model, + smoke_training_shape, + smoke_custom_image_tag, +): + from training.recipes.sft_loop import Config, main + from training.utils import InfraConfig, WandBConfig + + rlor_mgr, _deploy_mgr = smoke_sdk_managers + + with tempfile.NamedTemporaryFile(mode="w", suffix=".jsonl", delete=False) as f: + dataset_path = f.name + + try: + _make_chat_dataset(dataset_path, num_examples=4) + config = Config( + base_model=smoke_base_model, + dataset=dataset_path, + tokenizer_model=smoke_tokenizer_model, + learning_rate=1e-4, + epochs=1, + batch_size=2, + grad_accum=1, + max_examples=4, + infra=InfraConfig( + training_shape_id=smoke_training_shape, + skip_validations=True, + custom_image_tag=smoke_custom_image_tag, + ), + wandb=WandBConfig(), + ) + + metrics = main(config, rlor_mgr=rlor_mgr) + assert isinstance(metrics, dict) + assert metrics["steps"] >= 2, f"Expected >= 2 steps, got {metrics['steps']}" + finally: + os.unlink(dataset_path) diff --git a/training/tests/test_smoke_imports.py b/training/tests/test_smoke_imports.py index e260c391..081560b3 100644 --- a/training/tests/test_smoke_imports.py +++ b/training/tests/test_smoke_imports.py @@ -68,7 +68,7 @@ def test_util_imports(module: str): # ── Example modules ───────────────────────────────────────────────────────── EXAMPLE_MODULES_WITH_ENV = [ - ("training.examples.deepmath.train_deepmath", "math_verify", {"FIREWORKS_API_KEY": "test"}), + ("training.examples.deepmath_rl.train_deepmath", "math_verify", {"FIREWORKS_API_KEY": "test"}), ] diff --git a/training/tests/unit/test_supervised_rendering.py b/training/tests/unit/test_supervised_rendering.py new file mode 100644 index 00000000..a426aa10 --- /dev/null +++ b/training/tests/unit/test_supervised_rendering.py @@ -0,0 +1,163 @@ +from __future__ import annotations + +import pytest +import torch +from tinker_cookbook.renderers import TrainOnWhat + +from training.utils.losses import make_batch_weighted_sft_loss_fn +from training.utils.data import prepare_sampling_messages +from training.utils.supervised import ( + build_datum_from_token_mask, + render_preference_pair, + normalize_messages, + render_messages_to_datum, +) + + +class StubRenderer: + def __init__(self, tokens: list[int], weights: list[float]): + self.tokens = torch.tensor(tokens, dtype=torch.int64) + self.weights = torch.tensor(weights, dtype=torch.float32) + self.calls: list[tuple[list[dict], TrainOnWhat]] = [] + + def build_supervised_example(self, messages, train_on_what=TrainOnWhat.LAST_ASSISTANT_MESSAGE): + self.calls.append((messages, train_on_what)) + return self.tokens, self.weights + + +class SequenceRenderer: + def __init__(self, outputs: list[tuple[list[int], list[float]]]): + self.outputs = [ + (torch.tensor(tokens, dtype=torch.int64), torch.tensor(weights, dtype=torch.float32)) + for tokens, weights in outputs + ] + self.calls: list[tuple[list[dict], TrainOnWhat]] = [] + + def build_supervised_example(self, messages, train_on_what=TrainOnWhat.LAST_ASSISTANT_MESSAGE): + self.calls.append((messages, train_on_what)) + return self.outputs[len(self.calls) - 1] + + +def test_render_messages_to_datum_preserves_multi_turn_weights(): + renderer = StubRenderer( + tokens=[10, 11, 12, 13, 14, 15, 16, 17, 18], + weights=[0, 0, 1, 1, 0, 0, 1, 1, 1], + ) + + rendered = render_messages_to_datum( + [ + {"role": "user", "content": "u1"}, + {"role": "assistant", "content": "a1"}, + {"role": "user", "content": "u2"}, + {"role": "assistant", "content": "a2"}, + ], + renderer=renderer, + train_on_what="all_assistant_messages", + ) + + normalized_messages, train_on_what = renderer.calls[0] + assert [m["role"] for m in normalized_messages] == ["user", "assistant", "user", "assistant"] + assert train_on_what == TrainOnWhat.ALL_ASSISTANT_MESSAGES + + assert rendered.token_ids == [10, 11, 12, 13, 14, 15, 16, 17, 18] + assert rendered.token_weights == [0.0, 0.0, 1.0, 1.0, 0.0, 0.0, 1.0, 1.0, 1.0] + assert rendered.datum.loss_fn_inputs["target_tokens"].data == [11, 12, 13, 14, 15, 16, 17, 18] + assert rendered.datum.loss_fn_inputs["weights"].data == [0.0, 1.0, 1.0, 0.0, 0.0, 1.0, 1.0, 1.0] + + +def test_build_datum_from_token_mask_reuses_ui_mask_semantics(): + rendered = build_datum_from_token_mask( + token_ids=[100, 101, 102, 103, 104, 105], + token_mask=[0, 0, 1, 1, 0, 2], + include_loss_mask=True, + ) + + assert rendered.token_weights == [0.0, 0.0, 1.0, 1.0, 0.0, 1.0] + assert rendered.datum.loss_fn_inputs["target_tokens"].data == [101, 102, 103, 104, 105] + assert rendered.datum.loss_fn_inputs["weights"].data == [0.0, 1.0, 1.0, 0.0, 1.0] + assert rendered.datum.loss_fn_inputs["loss_mask"].data == [0.0, 1.0, 1.0, 0.0, 1.0] + + +def test_normalize_messages_supports_openai_tool_call_shape(): + normalized = normalize_messages( + [ + { + "role": "assistant", + "content": "", + "tool_calls": [ + { + "id": "call_1", + "type": "function", + "function": { + "name": "lake_move", + "arguments": '{"action":"RIGHT"}', + }, + } + ], + } + ] + ) + + assert normalized[0]["tool_calls"] == [{"name": "lake_move", "args": {"action": "RIGHT"}}] + + +def test_weighted_sft_loss_uses_sparse_weights(): + datum_a = build_datum_from_token_mask( + token_ids=[10, 11, 12, 13], + token_mask=[0, 0, 1, 0], + ).datum + datum_b = build_datum_from_token_mask( + token_ids=[20, 21, 22], + token_mask=[0, 1, 1], + ).datum + + loss_fn = make_batch_weighted_sft_loss_fn() + loss, metrics = loss_fn( + [datum_a, datum_b], + [ + torch.tensor([-0.1, -0.2, -0.3], dtype=torch.float32), + torch.tensor([-0.4, -0.5], dtype=torch.float32), + ], + ) + + assert loss.item() == pytest.approx(1.1 / 3.0) + assert metrics["ce_loss_sum"] == pytest.approx(1.1) + assert metrics["response_tokens"] == pytest.approx(3.0) + assert metrics["weighted_tokens"] == pytest.approx(3.0) + + +def test_render_preference_pair_uses_shared_renderer_path(): + renderer = SequenceRenderer( + outputs=[ + ([1, 2, 3, 4, 5, 6], [0, 0, 0, 1, 1, 1]), + ([1, 2, 3, 9, 10], [0, 0, 0, 1, 1]), + ] + ) + + pair = render_preference_pair( + {"messages": [{"role": "user", "content": "u"}, {"role": "assistant", "content": "good"}]}, + {"messages": [{"role": "user", "content": "u"}, {"role": "assistant", "content": "bad"}]}, + renderer=renderer, + tokenizer=None, + ) + + assert pair is not None + assert pair.chosen_tokens == [1, 2, 3, 4, 5, 6] + assert pair.rejected_tokens == [1, 2, 3, 9, 10] + assert pair.response_start == 3 + assert pair.chosen_datum.loss_fn_inputs["target_tokens"].data == [2, 3, 4, 5, 6] + assert len(renderer.calls) == 2 + + +def test_prepare_sampling_messages_only_strips_trailing_assistant(): + prepared = prepare_sampling_messages( + [ + {"role": "system", "content": "sys"}, + {"role": "user", "content": "u1"}, + {"role": "assistant", "content": "a1"}, + {"role": "user", "content": "u2"}, + {"role": "assistant", "content": "a2"}, + ] + ) + + assert [m["role"] for m in prepared] == ["system", "user", "assistant", "user"] diff --git a/training/utils/__init__.py b/training/utils/__init__.py index 63cb1159..a59595d4 100644 --- a/training/utils/__init__.py +++ b/training/utils/__init__.py @@ -28,7 +28,20 @@ "make_orpo_loss_fn", "make_batch_dpo_loss_fn", "make_batch_sft_loss_fn", + "make_batch_weighted_sft_loss_fn", "make_sft_loss_fn", + "RenderedSupervisedDatum", + "RenderedPreferencePair", + "build_next_token_datum", + "build_datum_from_token_mask", + "build_datum_from_tokens_and_weights", + "build_renderer", + "normalize_messages", + "parse_train_on_what", + "render_preference_pair", + "render_messages_to_datum", + "resolve_renderer_name", + "prepare_sampling_messages", "setup_deployment", "setup_resume", "setup_training_client", @@ -49,6 +62,7 @@ load_jsonl_dataset, load_preference_dataset, find_common_prefix_length, + prepare_sampling_messages, ) from training.utils.infra import ( setup_deployment, @@ -73,6 +87,20 @@ make_orpo_loss_fn, make_batch_dpo_loss_fn, make_batch_sft_loss_fn, + make_batch_weighted_sft_loss_fn, +) +from training.utils.supervised import ( + RenderedPreferencePair, + RenderedSupervisedDatum, + build_datum_from_token_mask, + build_next_token_datum, + build_datum_from_tokens_and_weights, + build_renderer, + normalize_messages, + parse_train_on_what, + render_preference_pair, + render_messages_to_datum, + resolve_renderer_name, ) from training.utils.resume import setup_resume from training.utils.logging import ( diff --git a/training/utils/data.py b/training/utils/data.py index eaf4d498..0a468189 100644 --- a/training/utils/data.py +++ b/training/utils/data.py @@ -97,6 +97,19 @@ def extract_text(item: dict[str, Any]) -> str: return "" +def prepare_sampling_messages(messages: List[Dict[str, Any]]) -> List[Dict[str, Any]]: + """Preserve multi-turn chat history, dropping only trailing assistant turns. + + RL prompt datasets should contain the full prior conversation. If the row + accidentally includes a final assistant completion, strip only that tail so + sampling resumes from the latest non-assistant turn. + """ + prepared = list(messages) + while prepared and prepared[-1].get("role") == "assistant": + prepared.pop() + return prepared + + def find_common_prefix_length(tokens1: List[int], tokens2: List[int]) -> int: """Find the length of the longest common prefix between two token lists.""" min_len = min(len(tokens1), len(tokens2)) diff --git a/training/utils/losses.py b/training/utils/losses.py index ef03cf79..942120b2 100644 --- a/training/utils/losses.py +++ b/training/utils/losses.py @@ -245,3 +245,59 @@ def loss_fn( } return loss_fn + + +def make_batch_weighted_sft_loss_fn( +) -> Callable[[List[tinker.Datum], List[torch.Tensor]], Tuple[torch.Tensor, Dict[str, float]]]: + """Cross-entropy loss over per-token supervised weights stored on each datum. + + This is the renderer-safe path for multi-turn SFT. Each datum must include + ``loss_fn_inputs["weights"]`` aligned with ``target_tokens``. + """ + + def loss_fn( + data: List[tinker.Datum], + logprobs_list: List[torch.Tensor], + ) -> Tuple[torch.Tensor, Dict[str, float]]: + assert len(data) == len(logprobs_list) + + total_loss = torch.tensor(0.0) + total_weight = 0.0 + total_nll = 0.0 + + for datum, logprobs in zip(data, logprobs_list, strict=True): + weights_td = datum.loss_fn_inputs.get("weights") + if weights_td is None: + raise ValueError("Weighted SFT expects each datum to include loss_fn_inputs['weights'].") + + weights = weights_td.to_torch().to(device=logprobs.device, dtype=logprobs.dtype) + if len(weights) != len(logprobs): + raise ValueError( + f"weights/logprobs length mismatch: {len(weights)} != {len(logprobs)}" + ) + + sample_weight = float(weights.sum().item()) + if sample_weight <= 0: + continue + + sample_nll = -(logprobs * weights).sum() + total_loss = total_loss + sample_nll + total_weight += sample_weight + with torch.no_grad(): + total_nll += float(sample_nll.item()) + + avg_loss = total_loss / total_weight if total_weight > 0 else total_loss + with torch.no_grad(): + avg_nll = total_nll / total_weight if total_weight > 0 else 0.0 + ppl = torch.exp(torch.tensor(avg_nll)).item() + + return avg_loss, { + "ce_loss": avg_nll, + "ce_loss_sum": total_nll, + "ppl": ppl, + "response_tokens": total_weight, + "weighted_tokens": total_weight, + "batch_size": len(logprobs_list), + } + + return loss_fn diff --git a/training/utils/supervised.py b/training/utils/supervised.py new file mode 100644 index 00000000..3e404550 --- /dev/null +++ b/training/utils/supervised.py @@ -0,0 +1,317 @@ +"""Shared supervised-rendering helpers. + +This module gives cookbook training code one token-level representation for +supervised data: + +- text/tool conversations rendered via a Tinker renderer +- eval-protocol-style token trajectories with a per-token mask + +Both paths end in the same ``tinker.Datum`` schema with ``target_tokens`` and +token-level ``weights`` so training uses the same spans that the UI shows. +""" + +from __future__ import annotations + +import json +from dataclasses import dataclass +from typing import Any, Iterable, Mapping, Sequence + +import torch +import tinker +from tinker_cookbook.model_info import get_recommended_renderer_name +from tinker_cookbook.renderers import Message, Renderer, TrainOnWhat, get_renderer +from tinker_cookbook.supervised.common import datum_from_tokens_weights + + +@dataclass(frozen=True) +class RenderedSupervisedDatum: + """Rendered tokens, token-level weights, and the final training datum.""" + + token_ids: list[int] + token_weights: list[float] + datum: tinker.Datum + + +@dataclass(frozen=True) +class RenderedPreferencePair: + """Rendered chosen/rejected preference pair with a shared response boundary.""" + + chosen_tokens: list[int] + rejected_tokens: list[int] + response_start: int + chosen_datum: tinker.Datum + rejected_datum: tinker.Datum + + +def parse_train_on_what(value: str | TrainOnWhat) -> TrainOnWhat: + """Normalize ``train_on_what`` config into Tinker's enum.""" + if isinstance(value, TrainOnWhat): + return value + return TrainOnWhat(value.lower()) + + +def resolve_renderer_name( + tokenizer_model: str, + renderer_name: str = "", +) -> str: + """Choose the renderer used for message -> token rendering.""" + if renderer_name: + return renderer_name + try: + return get_recommended_renderer_name(tokenizer_model) + except Exception as exc: # pragma: no cover - message only + raise ValueError( + f"Could not infer a renderer for tokenizer_model={tokenizer_model!r}. " + "Set Config.renderer_name explicitly." + ) from exc + + +def build_renderer( + tokenizer: Any, + tokenizer_model: str, + renderer_name: str = "", +) -> Renderer: + """Construct the Tinker renderer used for supervised formatting.""" + return get_renderer(resolve_renderer_name(tokenizer_model, renderer_name), tokenizer) + + +def _normalize_tool_calls(tool_calls: Any) -> list[dict[str, Any]]: + """Normalize common tool-call shapes into Tinker's ``{\"name\", \"args\"}`` form.""" + normalized: list[dict[str, Any]] = [] + for tool_call in tool_calls or []: + if not isinstance(tool_call, Mapping): + raise TypeError(f"Unsupported tool call type: {type(tool_call)!r}") + + if isinstance(tool_call.get("name"), str) and isinstance(tool_call.get("args"), Mapping): + normalized.append({ + "name": tool_call["name"], + "args": dict(tool_call["args"]), + }) + continue + + function = tool_call.get("function") + if isinstance(function, Mapping) and isinstance(function.get("name"), str): + raw_args = function.get("arguments", {}) + if isinstance(raw_args, str): + parsed_args = json.loads(raw_args) if raw_args else {} + elif isinstance(raw_args, Mapping): + parsed_args = dict(raw_args) + else: + raise TypeError(f"Unsupported tool call arguments type: {type(raw_args)!r}") + normalized.append({ + "name": function["name"], + "args": parsed_args, + }) + continue + + raise ValueError(f"Unsupported tool call shape: {tool_call}") + return normalized + + +def _normalize_content(content: Any) -> str: + """Convert OpenAI-style message content into plain text for text renderers.""" + if content is None: + return "" + if isinstance(content, str): + return content + if isinstance(content, Mapping): + if isinstance(content.get("text"), str): + return content["text"] + raise TypeError(f"Unsupported message content mapping: {content}") + if isinstance(content, Sequence): + text_parts: list[str] = [] + for part in content: + if isinstance(part, str): + text_parts.append(part) + continue + if not isinstance(part, Mapping): + raise TypeError(f"Unsupported message content part: {part!r}") + part_type = part.get("type") + if part_type == "text" and isinstance(part.get("text"), str): + text_parts.append(part["text"]) + continue + raise ValueError( + "Multimodal content is not supported by the shared text renderer. " + "Use the token_ids + mask path for eval-protocol visual trajectories." + ) + return "".join(text_parts) + raise TypeError(f"Unsupported message content type: {type(content)!r}") + + +def normalize_messages(messages: Iterable[Mapping[str, Any]]) -> list[Message]: + """Normalize cookbook/eval-style messages into Tinker's message schema.""" + normalized: list[Message] = [] + for message in messages: + role = message.get("role") + if not isinstance(role, str): + raise ValueError(f"Message is missing a string role: {message}") + + normalized_message: Message = { + "role": role, + "content": _normalize_content(message.get("content")), + } + + tool_calls = message.get("tool_calls") + if tool_calls is not None: + normalized_message["tool_calls"] = _normalize_tool_calls(tool_calls) + + thinking = message.get("thinking") + if thinking is not None: + if not isinstance(thinking, str): + raise TypeError(f"Unsupported thinking value type: {type(thinking)!r}") + normalized_message["thinking"] = thinking + + trainable = message.get("trainable") + if trainable is not None: + normalized_message["trainable"] = bool(trainable) + + normalized.append(normalized_message) + + return normalized + + +def build_datum_from_tokens_and_weights( + token_ids: Sequence[int], + token_weights: Sequence[float], + *, + max_seq_len: int | None = None, + include_loss_mask: bool = False, +) -> RenderedSupervisedDatum: + """Build a weighted ``tinker.Datum`` from full tokens and per-token weights.""" + tokens = [int(x) for x in token_ids] + weights = [float(x) for x in token_weights] + if len(tokens) != len(weights): + raise ValueError(f"tokens/weights length mismatch: {len(tokens)} != {len(weights)}") + if len(tokens) < 2: + raise ValueError("Need at least 2 tokens to build a supervised datum.") + + if max_seq_len is not None: + tokens = tokens[:max_seq_len] + weights = weights[:max_seq_len] + if len(tokens) < 2: + raise ValueError("Truncation left fewer than 2 tokens.") + + token_tensor = torch.tensor(tokens, dtype=torch.int64) + weight_tensor = torch.tensor(weights, dtype=torch.float32) + datum = datum_from_tokens_weights(token_tensor, weight_tensor) + + if include_loss_mask: + shifted_weights = [float(x) for x in weights[1:]] + datum.loss_fn_inputs["loss_mask"] = tinker.TensorData( + data=shifted_weights, + dtype="float32", + shape=[len(shifted_weights)], + ) + + return RenderedSupervisedDatum( + token_ids=tokens, + token_weights=weights, + datum=datum, + ) + + +def build_next_token_datum(token_ids: Sequence[int]) -> tinker.Datum: + """Build a standard next-token prediction datum without token weights.""" + tokens = [int(x) for x in token_ids] + if len(tokens) < 2: + raise ValueError("Need at least 2 tokens to build a next-token datum.") + return tinker.Datum( + model_input=tinker.ModelInput.from_ints(tokens[:-1]), + loss_fn_inputs={ + "target_tokens": tinker.TensorData( + data=tokens[1:], + dtype="int64", + shape=[len(tokens) - 1], + ) + }, + ) + + +def build_datum_from_token_mask( + token_ids: Sequence[int], + token_mask: Sequence[int | float], + *, + max_seq_len: int | None = None, + include_loss_mask: bool = False, +) -> RenderedSupervisedDatum: + """Build a weighted datum from an eval-protocol-style per-token mask.""" + token_weights = [1.0 if float(mask_value) > 0 else 0.0 for mask_value in token_mask] + return build_datum_from_tokens_and_weights( + token_ids, + token_weights, + max_seq_len=max_seq_len, + include_loss_mask=include_loss_mask, + ) + + +def render_messages_to_datum( + messages: Sequence[Mapping[str, Any]], + *, + renderer: Renderer, + train_on_what: str | TrainOnWhat = TrainOnWhat.ALL_ASSISTANT_MESSAGES, + max_seq_len: int | None = None, + include_loss_mask: bool = False, +) -> RenderedSupervisedDatum: + """Render a multi-turn conversation into the shared weighted datum format.""" + normalized_messages = normalize_messages(messages) + tokens, weights = renderer.build_supervised_example( + normalized_messages, + train_on_what=parse_train_on_what(train_on_what), + ) + return build_datum_from_tokens_and_weights( + tokens.tolist(), + weights.tolist(), + max_seq_len=max_seq_len, + include_loss_mask=include_loss_mask, + ) + + +def _common_prefix_length(tokens_a: Sequence[int], tokens_b: Sequence[int]) -> int: + min_len = min(len(tokens_a), len(tokens_b)) + for idx in range(min_len): + if int(tokens_a[idx]) != int(tokens_b[idx]): + return idx + return min_len + + +def _render_preference_item_tokens( + item: Mapping[str, Any], + *, + renderer: Renderer, + tokenizer: Any, +) -> list[int]: + if "messages" in item: + messages = item.get("messages") or [] + if not messages: + return [] + return render_messages_to_datum(messages, renderer=renderer).token_ids + if isinstance(item.get("text"), str): + return [int(x) for x in tokenizer.encode(item["text"])] + return [] + + +def render_preference_pair( + chosen: Mapping[str, Any], + rejected: Mapping[str, Any], + *, + renderer: Renderer, + tokenizer: Any, + max_seq_len: int | None = None, +) -> RenderedPreferencePair | None: + """Render a chosen/rejected pair through the shared tokenizer path.""" + chosen_tokens = _render_preference_item_tokens(chosen, renderer=renderer, tokenizer=tokenizer) + rejected_tokens = _render_preference_item_tokens(rejected, renderer=renderer, tokenizer=tokenizer) + if len(chosen_tokens) < 2 or len(rejected_tokens) < 2: + return None + if max_seq_len is not None and ( + len(chosen_tokens) > max_seq_len or len(rejected_tokens) > max_seq_len + ): + return None + + return RenderedPreferencePair( + chosen_tokens=chosen_tokens, + rejected_tokens=rejected_tokens, + response_start=_common_prefix_length(chosen_tokens, rejected_tokens), + chosen_datum=build_next_token_datum(chosen_tokens), + rejected_datum=build_next_token_datum(rejected_tokens), + ) From 27ce2ef7d6fc6c7166b99d3a2ec01a396ac24a66 Mon Sep 17 00:00:00 2001 From: Benny Chen Date: Fri, 6 Mar 2026 18:00:28 -0800 Subject: [PATCH 4/6] chore: bump eval-protocol to 0.3.23 --- training/pyproject.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/training/pyproject.toml b/training/pyproject.toml index 5b8ed151..2e2cfba1 100644 --- a/training/pyproject.toml +++ b/training/pyproject.toml @@ -9,7 +9,7 @@ requires-python = ">=3.11" dependencies = [ "fireworks-ai>=1.0.0a36,<2", "tinker-cookbook>=0.1.0", - "eval-protocol>=0.3.22", + "eval-protocol>=0.3.23", "tqdm", "torch", "datasets", From c2c8194606a7b27636bc1c657fa4ecce8d55362f Mon Sep 17 00:00:00 2001 From: Benny Chen Date: Fri, 6 Mar 2026 18:06:03 -0800 Subject: [PATCH 5/6] fix: support newer fireworks sdk error helpers --- training/tests/test_smoke_imports.py | 3 -- .../tests/unit/test_validate_preflight.py | 22 +++++++++ training/utils/validation.py | 48 ++++++++++++++++--- 3 files changed, 63 insertions(+), 10 deletions(-) diff --git a/training/tests/test_smoke_imports.py b/training/tests/test_smoke_imports.py index 081560b3..523b26d6 100644 --- a/training/tests/test_smoke_imports.py +++ b/training/tests/test_smoke_imports.py @@ -127,9 +127,6 @@ def test_tinker_types(attr: str): ("fireworks.training.sdk.trainer", "TrainerJobManager"), ("fireworks.training.sdk.trainer", "TrainerServiceEndpoint"), ("fireworks.training.sdk.trainer", "TrainingShapeProfile"), - ("fireworks.training.sdk.errors", "DOCS_HOTLOAD"), - ("fireworks.training.sdk.errors", "DOCS_API_KEYS"), - ("fireworks.training.sdk.errors", "DOCS_DEPLOYMENTS"), ("fireworks.training.sdk.errors", "format_sdk_error"), ("fireworks.training.sdk.errors", "request_with_retries"), ] diff --git a/training/tests/unit/test_validate_preflight.py b/training/tests/unit/test_validate_preflight.py index 8df357ed..e02a4059 100644 --- a/training/tests/unit/test_validate_preflight.py +++ b/training/tests/unit/test_validate_preflight.py @@ -6,6 +6,7 @@ import pytest +import training.utils.validation as validation_module from training.utils.validation import validate_preflight @@ -118,3 +119,24 @@ def test_passes(self): hot_load_interval=0, ) validate_preflight(args, fw_api_key="key", fw_account_id="acct") + + +def test_validation_falls_back_when_sdk_docs_constants_are_missing(monkeypatch): + class FakeErrors: + @staticmethod + def format_sdk_error(what, cause, solution, docs_url=None): + lines = [f"ERROR: {what}", f"Cause: {cause}", f"Solution: {solution}"] + if docs_url: + lines.append(f"Docs: {docs_url}") + return " | ".join(lines) + + monkeypatch.setattr(validation_module, "sdk_errors", FakeErrors()) + + assert validation_module._get_sdk_docs_url("DOCS_HOTLOAD", "fallback-hotload") == "fallback-hotload" + assert validation_module._get_sdk_docs_url("DOCS_API_KEYS", "fallback-keys") == "fallback-keys" + assert "fallback-keys" in validation_module._format_sdk_error( + "Missing FIREWORKS_API_KEY", + "No API key found.", + "Set FIREWORKS_API_KEY.", + docs_url=validation_module._get_sdk_docs_url("DOCS_API_KEYS", "fallback-keys"), + ) diff --git a/training/utils/validation.py b/training/utils/validation.py index 0d9c7e3b..8d1a01df 100644 --- a/training/utils/validation.py +++ b/training/utils/validation.py @@ -4,11 +4,45 @@ import logging -from fireworks.training.sdk.errors import DOCS_HOTLOAD, DOCS_API_KEYS, DOCS_DEPLOYMENTS, format_sdk_error +from fireworks.training.sdk import errors as sdk_errors from training.utils.config import InfraConfig, DeployConfig, ResumeConfig, HotloadConfig logger = logging.getLogger(__name__) +_DEFAULT_DOCS_HOTLOAD = "https://docs.fireworks.ai/fine-tuning/hotload" +_DEFAULT_DOCS_API_KEYS = "https://fireworks.ai/account/api-keys" +_DEFAULT_DOCS_DEPLOYMENTS = "https://docs.fireworks.ai/deployments" + + +def _get_sdk_docs_url(name: str, default: str) -> str: + value = getattr(sdk_errors, name, None) + return value if isinstance(value, str) and value else default + + +def _format_sdk_error( + what: str, + cause: str, + solution: str, + docs_url: str | None = None, +) -> str: + formatter = getattr(sdk_errors, "format_sdk_error", None) + if callable(formatter): + return formatter(what, cause, solution, docs_url=docs_url) + + lines = [ + f"ERROR: {what}", + f" Cause: {cause}", + f" Solution: {solution}", + ] + if docs_url: + lines.append(f" Docs: {docs_url}") + return "\n".join(lines) + + +DOCS_HOTLOAD = _get_sdk_docs_url("DOCS_HOTLOAD", _DEFAULT_DOCS_HOTLOAD) +DOCS_API_KEYS = _get_sdk_docs_url("DOCS_API_KEYS", _DEFAULT_DOCS_API_KEYS) +DOCS_DEPLOYMENTS = _get_sdk_docs_url("DOCS_DEPLOYMENTS", _DEFAULT_DOCS_DEPLOYMENTS) + def validate_config( base_model: str, @@ -23,7 +57,7 @@ def validate_config( if not base_model: errors.append( - format_sdk_error( + _format_sdk_error( "Missing base_model", "No base model specified.", "Set base_model (e.g. 'accounts/fireworks/models/qwen3-8b').", @@ -31,7 +65,7 @@ def validate_config( ) elif not base_model.startswith("accounts/"): errors.append( - format_sdk_error( + _format_sdk_error( "Invalid base_model format", f"'{base_model}' doesn't match expected format.", "Use format: accounts/ACCOUNT/models/MODEL_NAME\n" " Example: accounts/fireworks/models/qwen3-8b", @@ -40,7 +74,7 @@ def validate_config( if not dataset: errors.append( - format_sdk_error( + _format_sdk_error( "Missing dataset", "No dataset path or URL specified.", "Set dataset to a local path or URL to a JSONL file.", @@ -57,7 +91,7 @@ def validate_config( if infra and infra.node_count < 1: errors.append( - format_sdk_error( + _format_sdk_error( "Invalid node_count", f"node_count={infra.node_count} must be >= 1.", "Set InfraConfig(node_count=1) or higher.", @@ -81,7 +115,7 @@ def validate_preflight( if not skip_credential_check: if not fw_api_key: errors.append( - format_sdk_error( + _format_sdk_error( "Missing FIREWORKS_API_KEY", "No API key found in --fireworks-api-key or FIREWORKS_API_KEY env var.", "export FIREWORKS_API_KEY='your-key-here'\n" @@ -91,7 +125,7 @@ def validate_preflight( ) if not fw_account_id: errors.append( - format_sdk_error( + _format_sdk_error( "Missing FIREWORKS_ACCOUNT_ID", "No account ID found in --fireworks-account-id or FIREWORKS_ACCOUNT_ID env var.", "export FIREWORKS_ACCOUNT_ID='your-account-id'\n" From 85a11ae6f7ec3b9371a29b12efdff859920b625e Mon Sep 17 00:00:00 2001 From: Benny Chen Date: Fri, 6 Mar 2026 19:54:56 -0800 Subject: [PATCH 6/6] fix: lazily initialize FrozenLake multimodal client --- .../examples/frozen_lake/frozen_lake_rollout.py | 14 +++++++++++--- 1 file changed, 11 insertions(+), 3 deletions(-) diff --git a/training/examples/frozen_lake/frozen_lake_rollout.py b/training/examples/frozen_lake/frozen_lake_rollout.py index 5ab80b12..6798b6eb 100644 --- a/training/examples/frozen_lake/frozen_lake_rollout.py +++ b/training/examples/frozen_lake/frozen_lake_rollout.py @@ -246,6 +246,8 @@ def __init__( ): self.model_id = model_id self.tokenizer_name_or_path = tokenizer_name_or_path or model_id + self._api_key = api_key + self._base_url = base_url self.temperature = temperature self.max_tokens = max_tokens self.request_params = dict(request_params or {}) @@ -254,10 +256,16 @@ def __init__( self.tool_call_parser = tool_call_parser self.default_tools = default_tools or [] self._tokenizer = None - self._client = AsyncFireworks(api_key=api_key, base_url=base_url) + self._client = None async def close(self) -> None: - await self._client.close() + if self._client is not None: + await self._client.close() + + def _get_client(self) -> AsyncFireworks: + if self._client is None: + self._client = AsyncFireworks(api_key=self._api_key, base_url=self._base_url) + return self._client def _get_tokenizer(self): if self._tokenizer is None: @@ -453,7 +461,7 @@ async def create_completion_from_prompt_ids( base_delay = 10.0 for attempt in range(max_retries + 1): try: - response = await self._client.completions.create(**request_payload) + response = await self._get_client().completions.create(**request_payload) break except Exception as exc: status = getattr(exc, "status_code", None) or getattr(exc, "status", None)