{"version": 2, "width": 120, "height": 32, "timestamp": 1777899578, "idle_time_limit": 2.0, "env": {"SHELL": "/bin/bash", "TERM": "xterm-256color"}, "title": "kiln-bench: throughput, latency, training, all from one binary"}
[0.004818, "o", "$ "]
[0.407706, "o", "."]
[0.426786, "o", "/"]
[0.446923, "o", "t"]
[0.466933, "o", "a"]
[0.486078, "o", "r"]
[0.505429, "o", "g"]
[0.525883, "o", "e"]
[0.546023, "o", "t"]
[0.565728, "o", "/"]
[0.584959, "o", "r"]
[0.604611, "o", "e"]
[0.624852, "o", "l"]
[0.645179, "o", "e"]
[0.665105, "o", "a"]
[0.68535, "o", "s"]
[0.70552, "o", "e"]
[0.725913, "o", "/"]
[0.746033, "o", "k"]
[0.765899, "o", "i"]
[0.786343, "o", "l"]
[0.805546, "o", "n"]
[0.825897, "o", "-"]
[0.845343, "o", "b"]
[0.865816, "o", "e"]
[0.885907, "o", "n"]
[0.905342, "o", "c"]
[0.925194, "o", "h"]
[0.945632, "o", " "]
[0.964934, "o", "-"]
[0.984329, "o", "-"]
[1.004099, "o", "m"]
[1.024218, "o", "o"]
[1.043898, "o", "d"]
[1.064715, "o", "e"]
[1.084843, "o", "l"]
[1.104118, "o", "-"]
[1.124737, "o", "p"]
[1.145201, "o", "a"]
[1.164747, "o", "t"]
[1.184247, "o", "h"]
[1.204127, "o", " "]
[1.22402, "o", "."]
[1.243693, "o", "/"]
[1.264235, "o", "Q"]
[1.284039, "o", "w"]
[1.303856, "o", "e"]
[1.324311, "o", "n"]
[1.344801, "o", "3"]
[1.364241, "o", "."]
[1.384153, "o", "5"]
[1.404562, "o", "-"]
[1.424855, "o", "4"]
[1.445458, "o", "B"]
[1.465732, "o", " "]
[1.485977, "o", "-"]
[1.50535, "o", "-"]
[1.525128, "o", "p"]
[1.54554, "o", "a"]
[1.565558, "o", "g"]
[1.584941, "o", "e"]
[1.605027, "o", "d"]
[1.625025, "o", " "]
[1.645479, "o", "-"]
[1.665936, "o", "-"]
[1.685324, "o", "s"]
[1.705136, "o", "k"]
[1.724523, "o", "i"]
[1.744634, "o", "p"]
[1.764205, "o", "-"]
[1.784657, "o", "t"]
[1.805076, "o", "r"]
[1.825496, "o", "a"]
[1.844985, "o", "i"]
[1.865457, "o", "n"]
[1.885056, "o", "i"]
[1.904295, "o", "n"]
[1.924036, "o", "g"]
[1.943838, "o", " "]
[1.964155, "o", "\\"]
[1.983914, "o", "\r\n"]
[1.984035, "o", "$ "]
[2.386122, "o", " "]
[2.406482, "o", " "]
[2.426031, "o", " "]
[2.446259, "o", " "]
[2.465685, "o", "-"]
[2.485989, "o", "-"]
[2.505728, "o", "p"]
[2.525826, "o", "r"]
[2.546207, "o", "o"]
[2.566084, "o", "m"]
[2.58593, "o", "p"]
[2.605898, "o", "t"]
[2.625398, "o", "-"]
[2.645052, "o", "t"]
[2.664928, "o", "o"]
[2.684713, "o", "k"]
[2.704954, "o", "e"]
[2.724742, "o", "n"]
[2.745282, "o", "s"]
[2.764978, "o", " "]
[2.784481, "o", "2"]
[2.804853, "o", "5"]
[2.825007, "o", "6"]
[2.844706, "o", " "]
[2.864074, "o", "-"]
[2.884339, "o", "-"]
[2.90451, "o", "m"]
[2.924719, "o", "a"]
[2.94418, "o", "x"]
[2.964565, "o", "-"]
[2.984964, "o", "o"]
[3.004415, "o", "u"]
[3.024401, "o", "t"]
[3.04467, "o", "p"]
[3.064946, "o", "u"]
[3.085033, "o", "t"]
[3.105683, "o", "-"]
[3.126062, "o", "t"]
[3.145347, "o", "o"]
[3.16527, "o", "k"]
[3.18478, "o", "e"]
[3.205352, "o", "n"]
[3.225481, "o", "s"]
[3.245978, "o", " "]
[3.265274, "o", "6"]
[3.28546, "o", "4"]
[3.3053, "o", "\r\n"]
[3.352514, "o", "\r\n  \u001b[36m\u001b[1mkiln-bench\u001b[0m \u001b[2mv0.2.13\u001b[0m\r\n"]
[3.44269, "o", "  \u001b[2mGPU                   \u001b[0m \u001b[37m\u001b[1mNVIDIA RTX A6000 (46068 MB)\u001b[0m\r\n  \u001b[2mModel path            \u001b[0m \u001b[37m\u001b[1m./Qwen3.5-4B\u001b[0m\r\n"]
[3.475069, "o", "  loading layers \u001b[36m##\u001b[34m--------------------------------------\u001b[0m\u001b[0m   1/32  (0s)          \r\u001b[2K  loading layers \u001b[36m###\u001b[34m-------------------------------------\u001b[0m\u001b[0m   2/32  (0s)          \r\u001b[2K  loading layers \u001b[36m####\u001b[34m------------------------------------\u001b[0m\u001b[0m   3/32  (0s)          \r\u001b[2K  loading layers \u001b[36m######\u001b[34m----------------------------------\u001b[0m\u001b[0m   4/32  (0s)          \r\u001b[2K  loading layers \u001b[36m#######\u001b[34m---------------------------------\u001b[0m\u001b[0m   5/32  (0s)          \r\u001b[2K  loading layers \u001b[36m########\u001b[34m--------------------------------\u001b[0m\u001b[0m   6/32  (0s)          \r\u001b[2K  loading layers \u001b[36m#########\u001b[34m-------------------------------\u001b[0m\u001b[0m   7/32  (0s)          \r\u001b[2K  loading layers \u001b[36m###########\u001b[34m-----------------------------\u001b[0m\u001b[0m   8/32  (0s)          \r\u001b[2K  loading layers \u001b[36m############\u001b[34m----------------------------\u001b[0m\u001b[0m   9/32  (0s)          \r\u001b[2K  loading layers \u001b[36m#############\u001b[34m---------------------------\u001b[0m\u001b[0m  10/32  (0s)         "]
[3.475285, "o", " \r\u001b[2K"]
[5.400875, "o", "  \u001b[2mModel loaded          \u001b[0m \u001b[37m\u001b[1m1.90s (backend: cuda, 16343 MB VRAM)\u001b[0m\r\n"]
[5.902295, "o", "\r\n  \u001b[36m\u001b[1m▌\u001b[0m \u001b[36m\u001b[1mLatency benchmark (PAGED — production path)\u001b[0m\r\n"]
[5.905612, "o", "  Measuring latency [PAGED, block_size=16, blocks=19] (236 prompt tokens)...\r\n"]
[6.21433, "o", "    Prefill (paged): 308.5ms (765 tok/s)\r\n"]
[7.940743, "o", "    Decode (paged): 65 tokens, mean ITL 27.0ms (37.1 tok/s)\r\n\r\n  \u001b[36m\u001b[1m▌\u001b[0m \u001b[36m\u001b[1mTraining benchmark (skipped)\u001b[0m\r\n"]
[8.434934, "o", "\r\n  \u001b[36m\u001b[1m▌\u001b[0m \u001b[36m\u001b[1mInference throughput\u001b[0m\r\n  \u001b[36m→\u001b[0m \u001b[37m1 sequential run\u001b[0m\r\n"]
[8.625116, "o", "  \u001b[2m1 runs\u001b[0m [\u001b[36m\u001b[34m------------------------\u001b[0m\u001b[0m] 0/1 \u001b[2m\u001b[0m                                        "]
[10.339138, "o", "\r\u001b[2K  \u001b[2m1 runs\u001b[0m [\u001b[36m\u001b[34m------------------------\u001b[0m\u001b[0m] 0/1 \u001b[2m64 tok @ 37 tok/s\u001b[0m                       \r\u001b[2K  \u001b[2m1 runs\u001b[0m [\u001b[36m========================\u001b[34m\u001b[0m\u001b[0m] 1/1 \u001b[2m64 tok @ 37 tok/s\u001b[0m                       \r\u001b[2K"]
[10.360451, "o", "    \u001b[32m\u001b[1m✓\u001b[0m \u001b[37m\u001b[1m37.3\u001b[0m tok/s aggregate\r\n  \u001b[36m→\u001b[0m \u001b[37m4 sequential runs\u001b[0m\r\n"]
[10.540292, "o", "  \u001b[2m4 runs\u001b[0m [\u001b[36m\u001b[34m------------------------\u001b[0m\u001b[0m] 0/4 \u001b[2m\u001b[0m                                        "]
[12.240681, "o", "\r\u001b[2K  \u001b[2m4 runs\u001b[0m [\u001b[36m\u001b[34m------------------------\u001b[0m\u001b[0m] 0/4 \u001b[2m64 tok @ 38 tok/s\u001b[0m                       \r\u001b[2K  \u001b[2m4 runs\u001b[0m [\u001b[36m======>\u001b[34m-----------------\u001b[0m\u001b[0m] 1/4 \u001b[2m64 tok @ 38 tok/s\u001b[0m                       "]
[13.958878, "o", "\r\u001b[2K  \u001b[2m4 runs\u001b[0m [\u001b[36m======>\u001b[34m-----------------\u001b[0m\u001b[0m] 1/4 \u001b[2m64 tok @ 37 tok/s\u001b[0m                       \r\u001b[2K  \u001b[2m4 runs\u001b[0m [\u001b[36m============>\u001b[34m-----------\u001b[0m\u001b[0m] 2/4 \u001b[2m64 tok @ 37 tok/s\u001b[0m                       "]
[15.656182, "o", "\r\u001b[2K  \u001b[2m4 runs\u001b[0m [\u001b[36m============>\u001b[34m-----------\u001b[0m\u001b[0m] 2/4 \u001b[2m64 tok @ 38 tok/s\u001b[0m                       \r\u001b[2K  \u001b[2m4 runs\u001b[0m [\u001b[36m==================>\u001b[34m-----\u001b[0m\u001b[0m] 3/4 \u001b[2m64 tok @ 38 tok/s\u001b[0m                       "]
[17.35185, "o", "\r\u001b[2K  \u001b[2m4 runs\u001b[0m [\u001b[36m==================>\u001b[34m-----\u001b[0m\u001b[0m] 3/4 \u001b[2m64 tok @ 38 tok/s\u001b[0m                       \r\u001b[2K  \u001b[2m4 runs\u001b[0m [\u001b[36m========================\u001b[34m\u001b[0m\u001b[0m] 4/4 \u001b[2m64 tok @ 38 tok/s\u001b[0m                       \r\u001b[2K"]
[17.374421, "o", "    \u001b[32m\u001b[1m✓\u001b[0m \u001b[37m\u001b[1m37.6\u001b[0m tok/s aggregate\r\n  \u001b[36m→\u001b[0m \u001b[37m8 sequential runs\u001b[0m\r\n"]
[17.547256, "o", "  \u001b[2m8 runs\u001b[0m [\u001b[36m\u001b[34m------------------------\u001b[0m\u001b[0m] 0/8 \u001b[2m\u001b[0m                                        "]
[19.243985, "o", "\r\u001b[2K  \u001b[2m8 runs\u001b[0m [\u001b[36m\u001b[34m------------------------\u001b[0m\u001b[0m] 0/8 \u001b[2m64 tok @ 38 tok/s\u001b[0m                       \r\u001b[2K  \u001b[2m8 runs\u001b[0m [\u001b[36m===>\u001b[34m--------------------\u001b[0m\u001b[0m] 1/8 \u001b[2m64 tok @ 38 tok/s\u001b[0m                       "]
[20.93522, "o", "\r\u001b[2K  \u001b[2m8 runs\u001b[0m [\u001b[36m===>\u001b[34m--------------------\u001b[0m\u001b[0m] 1/8 \u001b[2m64 tok @ 38 tok/s\u001b[0m                       \r\u001b[2K  \u001b[2m8 runs\u001b[0m [\u001b[36m======>\u001b[34m-----------------\u001b[0m\u001b[0m] 2/8 \u001b[2m64 tok @ 38 tok/s\u001b[0m                       "]
[22.630923, "o", "\r\u001b[2K  \u001b[2m8 runs\u001b[0m [\u001b[36m======>\u001b[34m-----------------\u001b[0m\u001b[0m] 2/8 \u001b[2m64 tok @ 38 tok/s\u001b[0m                       \r\u001b[2K  \u001b[2m8 runs\u001b[0m [\u001b[36m=========>\u001b[34m--------------\u001b[0m\u001b[0m] 3/8 \u001b[2m64 tok @ 38 tok/s\u001b[0m                       "]
[24.337746, "o", "\r\u001b[2K  \u001b[2m8 runs\u001b[0m [\u001b[36m=========>\u001b[34m--------------\u001b[0m\u001b[0m] 3/8 \u001b[2m64 tok @ 37 tok/s\u001b[0m                       \r\u001b[2K  \u001b[2m8 runs\u001b[0m [\u001b[36m============>\u001b[34m-----------\u001b[0m\u001b[0m] 4/8 \u001b[2m64 tok @ 37 tok/s\u001b[0m                       "]
[26.002581, "o", "\r\u001b[2K  \u001b[2m8 runs\u001b[0m [\u001b[36m============>\u001b[34m-----------\u001b[0m\u001b[0m] 4/8 \u001b[2m64 tok @ 38 tok/s\u001b[0m                       \r\u001b[2K  \u001b[2m8 runs\u001b[0m [\u001b[36m===============>\u001b[34m--------\u001b[0m\u001b[0m] 5/8 \u001b[2m64 tok @ 38 tok/s\u001b[0m                       "]
[27.682848, "o", "\r\u001b[2K  \u001b[2m8 runs\u001b[0m [\u001b[36m===============>\u001b[34m--------\u001b[0m\u001b[0m] 5/8 \u001b[2m64 tok @ 38 tok/s\u001b[0m                       \r\u001b[2K  \u001b[2m8 runs\u001b[0m [\u001b[36m==================>\u001b[34m-----\u001b[0m\u001b[0m] 6/8 \u001b[2m64 tok @ 38 tok/s\u001b[0m                       "]
[29.377956, "o", "\r\u001b[2K  \u001b[2m8 runs\u001b[0m [\u001b[36m==================>\u001b[34m-----\u001b[0m\u001b[0m] 6/8 \u001b[2m64 tok @ 38 tok/s\u001b[0m                       \r\u001b[2K  \u001b[2m8 runs\u001b[0m [\u001b[36m=====================>\u001b[34m--\u001b[0m\u001b[0m] 7/8 \u001b[2m64 tok @ 38 tok/s\u001b[0m                       "]
[31.071028, "o", "\r\u001b[2K  \u001b[2m8 runs\u001b[0m [\u001b[36m=====================>\u001b[34m--\u001b[0m\u001b[0m] 7/8 \u001b[2m64 tok @ 38 tok/s\u001b[0m                       \r\u001b[2K  \u001b[2m8 runs\u001b[0m [\u001b[36m========================\u001b[34m\u001b[0m\u001b[0m] 8/8 \u001b[2m64 tok @ 38 tok/s\u001b[0m                       \r\u001b[2K"]
[31.093605, "o", "    \u001b[32m\u001b[1m✓\u001b[0m \u001b[37m\u001b[1m37.9\u001b[0m tok/s aggregate\r\n  \u001b[36m→\u001b[0m \u001b[37m16 sequential runs\u001b[0m\r\n"]
[31.268978, "o", "  \u001b[2m16 runs\u001b[0m [\u001b[36m\u001b[34m------------------------\u001b[0m\u001b[0m] 0/16 \u001b[2m\u001b[0m                                      "]
[32.960823, "o", "\r\u001b[2K  \u001b[2m16 runs\u001b[0m [\u001b[36m\u001b[34m------------------------\u001b[0m\u001b[0m] 0/16 \u001b[2m64 tok @ 38 tok/s\u001b[0m                     \r\u001b[2K  \u001b[2m16 runs\u001b[0m [\u001b[36m=>\u001b[34m----------------------\u001b[0m\u001b[0m] 1/16 \u001b[2m64 tok @ 38 tok/s\u001b[0m                     "]
[34.676889, "o", "\r\u001b[2K  \u001b[2m16 runs\u001b[0m [\u001b[36m=>\u001b[34m----------------------\u001b[0m\u001b[0m] 1/16 \u001b[2m64 tok @ 37 tok/s\u001b[0m                     \r\u001b[2K  \u001b[2m16 runs\u001b[0m [\u001b[36m===>\u001b[34m--------------------\u001b[0m\u001b[0m] 2/16 \u001b[2m64 tok @ 37 tok/s\u001b[0m                     "]
[36.387734, "o", "\r\u001b[2K  \u001b[2m16 runs\u001b[0m [\u001b[36m===>\u001b[34m--------------------\u001b[0m\u001b[0m] 2/16 \u001b[2m64 tok @ 37 tok/s\u001b[0m                     \r\u001b[2K  \u001b[2m16 runs\u001b[0m [\u001b[36m====>\u001b[34m-------------------\u001b[0m\u001b[0m] 3/16 \u001b[2m64 tok @ 37 tok/s\u001b[0m                     "]
[38.078656, "o", "\r\u001b[2K  \u001b[2m16 runs\u001b[0m [\u001b[36m====>\u001b[34m-------------------\u001b[0m\u001b[0m] 3/16 \u001b[2m64 tok @ 38 tok/s\u001b[0m                     \r\u001b[2K  \u001b[2m16 runs\u001b[0m [\u001b[36m======>\u001b[34m-----------------\u001b[0m\u001b[0m] 4/16 \u001b[2m64 tok @ 38 tok/s\u001b[0m                     "]
[39.771738, "o", "\r\u001b[2K  \u001b[2m16 runs\u001b[0m [\u001b[36m======>\u001b[34m-----------------\u001b[0m\u001b[0m] 4/16 \u001b[2m64 tok @ 38 tok/s\u001b[0m                     \r\u001b[2K  \u001b[2m16 runs\u001b[0m [\u001b[36m=======>\u001b[34m----------------\u001b[0m\u001b[0m] 5/16 \u001b[2m64 tok @ 38 tok/s\u001b[0m                     "]
[41.50172, "o", "\r\u001b[2K  \u001b[2m16 runs\u001b[0m [\u001b[36m=======>\u001b[34m----------------\u001b[0m\u001b[0m] 5/16 \u001b[2m64 tok @ 37 tok/s\u001b[0m                     \r\u001b[2K  \u001b[2m16 runs\u001b[0m [\u001b[36m=========>\u001b[34m--------------\u001b[0m\u001b[0m] 6/16 \u001b[2m64 tok @ 37 tok/s\u001b[0m                     "]
[43.193944, "o", "\r\u001b[2K  \u001b[2m16 runs\u001b[0m [\u001b[36m=========>\u001b[34m--------------\u001b[0m\u001b[0m] 6/16 \u001b[2m64 tok @ 38 tok/s\u001b[0m                     \r\u001b[2K  \u001b[2m16 runs\u001b[0m [\u001b[36m==========>\u001b[34m-------------\u001b[0m\u001b[0m] 7/16 \u001b[2m64 tok @ 38 tok/s\u001b[0m                     "]
[44.868009, "o", "\r\u001b[2K  \u001b[2m16 runs\u001b[0m [\u001b[36m==========>\u001b[34m-------------\u001b[0m\u001b[0m] 7/16 \u001b[2m64 tok @ 38 tok/s\u001b[0m                     \r\u001b[2K  \u001b[2m16 runs\u001b[0m [\u001b[36m============>\u001b[34m-----------\u001b[0m\u001b[0m] 8/16 \u001b[2m64 tok @ 38 tok/s\u001b[0m                     "]
[46.540985, "o", "\r\u001b[2K  \u001b[2m16 runs\u001b[0m [\u001b[36m============>\u001b[34m-----------\u001b[0m\u001b[0m] 8/16 \u001b[2m64 tok @ 38 tok/s\u001b[0m                     \r\u001b[2K  \u001b[2m16 runs\u001b[0m [\u001b[36m=============>\u001b[34m----------\u001b[0m\u001b[0m] 9/16 \u001b[2m64 tok @ 38 tok/s\u001b[0m                     "]
[48.204458, "o", "\r\u001b[2K  \u001b[2m16 runs\u001b[0m [\u001b[36m=============>\u001b[34m----------\u001b[0m\u001b[0m] 9/16 \u001b[2m64 tok @ 38 tok/s\u001b[0m                     \r\u001b[2K  \u001b[2m16 runs\u001b[0m [\u001b[36m===============>\u001b[34m--------\u001b[0m\u001b[0m] 10/16 \u001b[2m64 tok @ 38 tok/s\u001b[0m                    "]
[49.865457, "o", "\r\u001b[2K  \u001b[2m16 runs\u001b[0m [\u001b[36m===============>\u001b[34m--------\u001b[0m\u001b[0m] 10/16 \u001b[2m64 tok @ 39 tok/s\u001b[0m                    \r\u001b[2K  \u001b[2m16 runs\u001b[0m [\u001b[36m================>\u001b[34m-------\u001b[0m\u001b[0m] 11/16 \u001b[2m64 tok @ 39 tok/s\u001b[0m                    "]
[51.528325, "o", "\r\u001b[2K  \u001b[2m16 runs\u001b[0m [\u001b[36m================>\u001b[34m-------\u001b[0m\u001b[0m] 11/16 \u001b[2m64 tok @ 38 tok/s\u001b[0m                    \r\u001b[2K  \u001b[2m16 runs\u001b[0m [\u001b[36m==================>\u001b[34m-----\u001b[0m\u001b[0m] 12/16 \u001b[2m64 tok @ 38 tok/s\u001b[0m                    "]
[53.193883, "o", "\r\u001b[2K  \u001b[2m16 runs\u001b[0m [\u001b[36m==================>\u001b[34m-----\u001b[0m\u001b[0m] 12/16 \u001b[2m64 tok @ 38 tok/s\u001b[0m                    \r\u001b[2K  \u001b[2m16 runs\u001b[0m [\u001b[36m===================>\u001b[34m----\u001b[0m\u001b[0m] 13/16 \u001b[2m64 tok @ 38 tok/s\u001b[0m                    "]
[54.857533, "o", "\r\u001b[2K  \u001b[2m16 runs\u001b[0m [\u001b[36m===================>\u001b[34m----\u001b[0m\u001b[0m] 13/16 \u001b[2m64 tok @ 38 tok/s\u001b[0m                    \r\u001b[2K  \u001b[2m16 runs\u001b[0m [\u001b[36m=====================>\u001b[34m--\u001b[0m\u001b[0m] 14/16 \u001b[2m64 tok @ 38 tok/s\u001b[0m                    "]
[56.547273, "o", "\r\u001b[2K  \u001b[2m16 runs\u001b[0m [\u001b[36m=====================>\u001b[34m--\u001b[0m\u001b[0m] 14/16 \u001b[2m64 tok @ 38 tok/s\u001b[0m                    \r\u001b[2K  \u001b[2m16 runs\u001b[0m [\u001b[36m======================>\u001b[34m-\u001b[0m\u001b[0m] 15/16 \u001b[2m64 tok @ 38 tok/s\u001b[0m                    "]
[58.238535, "o", "\r\u001b[2K  \u001b[2m16 runs\u001b[0m [\u001b[36m======================>\u001b[34m-\u001b[0m\u001b[0m] 15/16 \u001b[2m64 tok @ 38 tok/s\u001b[0m                    \r\u001b[2K  \u001b[2m16 runs\u001b[0m [\u001b[36m========================\u001b[34m\u001b[0m\u001b[0m] 16/16 \u001b[2m64 tok @ 38 tok/s\u001b[0m                    \r\u001b[2K"]
[58.261231, "o", "    \u001b[32m\u001b[1m✓\u001b[0m \u001b[37m\u001b[1m38.0\u001b[0m tok/s aggregate\r\n\r\n  \u001b[36m\u001b[1m▌\u001b[0m \u001b[36m\u001b[1mBenchmark results\u001b[0m\r\n  \u001b[2mGPU                   \u001b[0m \u001b[37m\u001b[1mNVIDIA RTX A6000 (46068 MB VRAM, source: nvidia-smi)\u001b[0m\r\n  \u001b[2mModel load            \u001b[0m \u001b[37m\u001b[1m1.90s (16343 MB VRAM)\u001b[0m\r\n\r\n  \u001b[36m\u001b[1m▌\u001b[0m \u001b[36m\u001b[1mInference throughput\u001b[0m\r\n  \u001b[2mRuns         Prompt     Output        tok/s    VRAM MB\u001b[0m\r\n  1               248         64 \u001b[37m\u001b[1m        37.3\u001b[0m      16615\r\n  4               248        256 \u001b[37m\u001b[1m        37.6\u001b[0m      16615\r\n  8               248        512 \u001b[37m\u001b[1m        37.9\u001b[0m      16615\r\n  16              248       1024 \u001b[37m\u001b[1m        38.0\u001b[0m      16615\r\n\r\n  \u001b[36m\u001b[1m▌\u001b[0m \u001b[36"]
[58.261392, "o", "m\u001b[1mLatency (single request)\u001b[0m\r\n  \u001b[2mPrompt tokens         \u001b[0m \u001b[37m\u001b[1m236\u001b[0m\r\n  \u001b[2mPrefill               \u001b[0m \u001b[37m\u001b[1m308.5 ms (765 tok/s)\u001b[0m\r\n  \u001b[2mTime to first token   \u001b[0m \u001b[37m\u001b[1m308.5\u001b[0m \u001b[2mms\u001b[0m\r\n  \u001b[2mMean inter-token      \u001b[0m \u001b[37m\u001b[1m27.0 ms (37.1 tok/s)\u001b[0m\r\n  \u001b[2mP50 inter-token       \u001b[0m \u001b[37m\u001b[1m26.0\u001b[0m \u001b[2mms\u001b[0m\r\n  \u001b[2m"]
[58.261711, "o", "P99 inter-token       \u001b[0m \u001b[37m\u001b[1m31.1\u001b[0m \u001b[2mms\u001b[0m\r\n  \u001b[2mTokens generated      \u001b[0m \u001b[37m\u001b[1m65\u001b[0m\r\n  \u001b[2mSpec method           \u001b[0m \u001b[37m\u001b[1moff\u001b[0m\r\n\r\n{\r\n  \"backend\": \"cuda\",\r\n  \"gpu_info\": {\r\n    \"name\": \"NVIDIA RTX A6000\",\r\n    \"total_vram_mb\": 46068,\r\n    \"vram_source\": \"nvidia-smi\"\r\n  },\r\n  \"model_load\": {\r\n    \"load_time_secs\": 1.904760746,\r\n    \"model_vram_mb\": 16343\r\n  },\r\n  \"inference\": [\r\n    {\r\n      \"batch_size\": 1,\r\n      \"prompt_tokens\": 248,\r\n      \"output_tokens\": 64,\r\n      \"total_time_secs\": 1.714206246,\r\n      \"tokens_per_sec\": 37.33506405623025,\r\n      \"peak_vram_mb\": 16615\r\n    },\r\n    {\r\n      \"batch_size\": 4,\r\n      \"prompt_tokens\": 248,\r\n      \"output_tokens\": 256,\r\n      \"total_time_secs\": 6.811464232,\r\n      \"tokens_per_sec\": 37.58369585166751,\r\n      \"peak_vram_mb\": 16615\r\n    },\r\n    {\r\n      \"batch_size\": 8,\r\n      \"prompt_tokens\": 248,\r\n      \"output_tokens\": 512,\r\n      \"total_time_secs\": 13.523815409000001,\r\n      \"tokens_per_sec\": 37.8591384543202,\r\n      \"peak_vram_mb"]
[58.261806, "o", "\": 16615\r\n    },\r\n    {\r\n      \"batch_size\": 16,\r\n      \"prompt_tokens\": 248,\r\n      \"output_tokens\": 1024,\r\n      \"total_time_secs\": 26.969591366,\r\n      \"tokens_per_sec\": 37.968687997658556,\r\n      \"peak_vram_mb\": 16615\r\n    }\r\n  ],\r\n  \"latency\": {\r\n    \"prompt_tokens\": 236,\r\n    \"prefill_time_ms\": 308.51104699999996,\r\n    \"prefill_tokens_per_sec\": 764.9645038480584,\r\n    \"time_to_first_token_ms\": 308.51104699999996,\r\n    \"mean_inter_token_ms\": 26.971795296874994,\r\n    \"p50_inter_token_ms\": 26.004809,\r\n    \"p99_inter_token_ms\": 31.135721,\r\n    \"num_tokens_generated\": 65,\r\n    \"decode_tokens_per_sec\": 37.07576707420221,\r\n    \"spec_method\": \"off\"\r\n  },\r\n  \"training\": null\r\n}\r\n"]
[60.960399, "o", "$ "]
[61.36284, "o", "#"]
[61.382126, "o", " "]
[61.401838, "o", "S"]
[61.421142, "o", "a"]
[61.440417, "o", "m"]
[61.460142, "o", "e"]
[61.48061, "o", " "]
[61.499779, "o", "f"]
[61.519339, "o", "l"]
[61.538958, "o", "a"]
[61.559075, "o", "g"]
[61.578265, "o", "s"]
[61.598204, "o", ","]
[61.617979, "o", " "]
[61.637492, "o", "w"]
[61.657974, "o", "i"]
[61.678464, "o", "t"]
[61.697678, "o", "h"]
[61.717756, "o", " "]
[61.738137, "o", "-"]
[61.757735, "o", "v"]
[61.777312, "o", ":"]
[61.797159, "o", " "]
[61.816511, "o", "s"]
[61.836752, "o", "t"]
[61.856359, "o", "r"]
[61.876263, "o", "u"]
[61.895837, "o", "c"]
[61.915911, "o", "t"]
[61.936045, "o", "u"]
[61.955537, "o", "r"]
[61.975891, "o", "e"]
[61.995364, "o", "d"]
[62.014965, "o", " "]
[62.034995, "o", "t"]
[62.054721, "o", "r"]
[62.07548, "o", "a"]
[62.095856, "o", "c"]
[62.11545, "o", "i"]
[62.134804, "o", "n"]
[62.154425, "o", "g"]
[62.174597, "o", " "]
[62.194011, "o", "f"]
[62.213677, "o", "o"]
[62.233824, "o", "r"]
[62.253228, "o", " "]
[62.272849, "o", "C"]
[62.292997, "o", "I"]
[62.31334, "o", " "]
[62.332918, "o", "+"]
[62.352874, "o", " "]
[62.372763, "o", "l"]
[62.393216, "o", "o"]
[62.413274, "o", "g"]
[62.432846, "o", " "]
[62.452884, "o", "s"]
[62.473062, "o", "c"]
[62.492189, "o", "r"]
[62.511815, "o", "a"]
[62.530946, "o", "p"]
[62.550682, "o", "e"]
[62.569903, "o", "r"]
[62.589116, "o", "s"]
[62.608803, "o", "."]
[62.628723, "o", "\r\n$ "]
[63.031359, "o", "."]
[63.051098, "o", "/"]
[63.071167, "o", "t"]
[63.090971, "o", "a"]
[63.110162, "o", "r"]
[63.129971, "o", "g"]
[63.149214, "o", "e"]
[63.168301, "o", "t"]
[63.187615, "o", "/"]
[63.206705, "o", "r"]
[63.226885, "o", "e"]
[63.246217, "o", "l"]
[63.266127, "o", "e"]
[63.28579, "o", "a"]
[63.30621, "o", "s"]
[63.325992, "o", "e"]
[63.346012, "o", "/"]
[63.365448, "o", "k"]
[63.384936, "o", "i"]
[63.405422, "o", "l"]
[63.424943, "o", "n"]
[63.44507, "o", "-"]
[63.464667, "o", "b"]
[63.484781, "o", "e"]
[63.504867, "o", "n"]
[63.524992, "o", "c"]
[63.545383, "o", "h"]
[63.565193, "o", " "]
[63.585179, "o", "-"]
[63.605558, "o", "v"]
[63.625435, "o", " "]
[63.645003, "o", "-"]
[63.66486, "o", "-"]
[63.68485, "o", "m"]
[63.704505, "o", "o"]
[63.725219, "o", "d"]
[63.74492, "o", "e"]
[63.764208, "o", "l"]
[63.784512, "o", "-"]
[63.803764, "o", "p"]
[63.823239, "o", "a"]
[63.843758, "o", "t"]
[63.864012, "o", "h"]
[63.884052, "o", " "]
[63.904594, "o", "."]
[63.925168, "o", "/"]
[63.945016, "o", "Q"]
[63.964591, "o", "w"]
[63.984752, "o", "e"]
[64.004074, "o", "n"]
[64.024408, "o", "3"]
[64.044683, "o", "."]
[64.065026, "o", "5"]
[64.085044, "o", "-"]
[64.10532, "o", "4"]
[64.124992, "o", "B"]
[64.144528, "o", " "]
[64.163979, "o", "-"]
[64.183323, "o", "-"]
[64.203099, "o", "p"]
[64.223036, "o", "a"]
[64.242692, "o", "g"]
[64.263052, "o", "e"]
[64.283736, "o", "d"]
[64.303576, "o", " "]
[64.32386, "o", "-"]
[64.343784, "o", "-"]
[64.364175, "o", "s"]
[64.384536, "o", "k"]
[64.404698, "o", "i"]
[64.424807, "o", "p"]
[64.445069, "o", "-"]
[64.464845, "o", "t"]
[64.485229, "o", "r"]
[64.505159, "o", "a"]
[64.525917, "o", "i"]
[64.545933, "o", "n"]
[64.565289, "o", "i"]
[64.58562, "o", "n"]
[64.605159, "o", "g"]
[64.625375, "o", " "]
[64.645054, "o", "\\"]
[64.664838, "o", "\r\n$ "]
[65.067269, "o", " "]
[65.087209, "o", " "]
[65.107488, "o", " "]
[65.12675, "o", " "]
[65.147102, "o", "-"]
[65.167673, "o", "-"]
[65.187724, "o", "p"]
[65.207695, "o", "r"]
[65.228009, "o", "o"]
[65.247902, "o", "m"]
[65.268031, "o", "p"]
[65.287951, "o", "t"]
[65.30815, "o", "-"]
[65.327723, "o", "t"]
[65.347727, "o", "o"]
[65.367813, "o", "k"]
[65.387902, "o", "e"]
[65.408205, "o", "n"]
[65.42825, "o", "s"]
[65.447404, "o", " "]
[65.466733, "o", "2"]
[65.486517, "o", "5"]
[65.50643, "o", "6"]
[65.526509, "o", " "]
[65.545758, "o", "-"]
[65.565316, "o", "-"]
[65.584371, "o", "m"]
[65.604378, "o", "a"]
[65.62487, "o", "x"]
[65.645235, "o", "-"]
[65.665016, "o", "o"]
[65.685747, "o", "u"]
[65.705746, "o", "t"]
[65.725927, "o", "p"]
[65.746345, "o", "u"]
[65.766226, "o", "t"]
[65.786479, "o", "-"]
[65.80689, "o", "t"]
[65.827074, "o", "o"]
[65.846922, "o", "k"]
[65.867013, "o", "e"]
[65.886838, "o", "n"]
[65.907092, "o", "s"]
[65.926811, "o", " "]
[65.946785, "o", "3"]
[65.966906, "o", "2"]
[65.986805, "o", " "]
[66.007232, "o", "2"]
[66.026725, "o", ">"]
[66.04697, "o", "&"]
[66.067012, "o", "1"]
[66.087014, "o", " "]
[66.106464, "o", "|"]
[66.126277, "o", " "]
[66.146208, "o", "h"]
[66.166088, "o", "e"]
[66.186389, "o", "a"]
[66.206843, "o", "d"]
[66.227479, "o", " "]
[66.246934, "o", "-"]
[66.266385, "o", "2"]
[66.286707, "o", "0"]
[66.306891, "o", "\r\n"]
[66.348594, "o", "\r\n  kiln-bench v0.2.13\r\n"]
[66.394873, "o", "  GPU                    NVIDIA RTX A6000 (46068 MB)\r\n  Model path             ./Qwen3.5-4B\r\n"]
[66.421846, "o", "\u001b[2m2026-05-04T13:00:44.523322Z\u001b[0m \u001b[32m INFO\u001b[0m \u001b[2mkiln_model::loader\u001b[0m\u001b[2m:\u001b[0m Loading model from ./Qwen3.5-4B (2 shards)\r\n"]
[66.422834, "o", "\u001b[2m2026-05-04T13:00:44.524359Z\u001b[0m \u001b[32m INFO\u001b[0m \u001b[2mkiln_model::loader\u001b[0m\u001b[2m:\u001b[0m Using weight name prefix: \"model.language_model.\"\r\n"]
[66.422996, "o", "\u001b[2m2026-05-04T13:00:44.524533Z\u001b[0m \u001b[32m INFO\u001b[0m \u001b[2mkiln_model::loader\u001b[0m\u001b[2m:\u001b[0m Native MTP head detected; deferring CPU load until first use \u001b[3mmtp_prefix\u001b[0m\u001b[2m=\u001b[0mmtp.\r\n\u001b[2m2026-05-04T13:00:44.524539Z\u001b[0m \u001b[32m INFO\u001b[0m \u001b[2mkiln_model::loader\u001b[0m\u001b[2m:\u001b[0m Loaded 4206M parameters (8022 MB) across 32 layers\r\n\u001b[2m2026-05-04T13:00:44.524599Z\u001b[0m \u001b[32m INFO\u001b[0m \u001b[2mkiln_server::device\u001b[0m\u001b[2m:\u001b[0m CUDA available — using GPU device 0\r\n"]
[68.545838, "o", "  Model loaded           2.06s (backend: cuda, 16343 MB VRAM)\r\n"]
[69.050788, "o", "\r\n  ▌ Latency benchmark (PAGED — production path)\r\n"]
[69.056594, "o", "  Measuring latency [PAGED, block_size=16, blocks=17] (236 prompt tokens)...\r\n"]
[69.143041, "o", "\u001b[2m2026-05-04T13:00:47.244419Z\u001b[0m \u001b[32m INFO\u001b[0m \u001b[2mkiln_model::forward\u001b[0m\u001b[2m:\u001b[0m kiln rmsnorm gate \u001b[3mtotal_vram_mib\u001b[0m\u001b[2m=\u001b[0m46068 \u001b[3mthreshold_mib\u001b[0m\u001b[2m=\u001b[0m48128 \u001b[3mdetection_source\u001b[0m\u001b[2m=\u001b[0mnvidia-smi \u001b[3mforce_override\u001b[0m\u001b[2m=\u001b[0mfalse \u001b[3mfused_path\u001b[0m\u001b[2m=\u001b[0m\"OFF\"\r\n"]
[69.398125, "o", "    Prefill (paged): 341.7ms (691 tok/s)\r\n"]
[70.263246, "o", "    Decode (paged): 33 tokens, mean ITL 27.0ms (37.0 tok/s)\r\n"]
[70.263357, "o", "\r\n  ▌ Training benchmark (skipped)\r\n"]
[70.77699, "o", "\u001b[2m2026-05-04T13:00:48.878513Z\u001b[0m \u001b[32m INFO\u001b[0m \u001b[2mkiln_model::cuda_graph\u001b[0m\u001b[2m:\u001b[0m CUDA graphs enabled for decode\r\n\r\n"]
