{
"cells": [
{
"cell_type": "markdown",
"id": "1a1cab6c",
"metadata": {},
"source": [
"# Comparison Between TreeValue and Jax LibTree"
]
},
{
"cell_type": "markdown",
"id": "a9426f1e",
"metadata": {},
"source": [
"In this section, we will take a look at the feature and performance of the [jax-libtree](https://jax.readthedocs.io/en/latest/pytrees.html) library, which is developed by Google."
]
},
{
"cell_type": "code",
"execution_count": 1,
"id": "0f4b6d16",
"metadata": {
"execution": {
"iopub.execute_input": "2024-10-16T12:55:33.509805Z",
"iopub.status.busy": "2024-10-16T12:55:33.509602Z",
"iopub.status.idle": "2024-10-16T12:55:33.516823Z",
"shell.execute_reply": "2024-10-16T12:55:33.516306Z"
}
},
"outputs": [],
"source": [
"_TREE_DATA_1 = {'a': 1, 'b': 2, 'x': {'c': 3, 'd': 4}}"
]
},
{
"cell_type": "markdown",
"id": "b1085059",
"metadata": {},
"source": [
"## Mapping Operation"
]
},
{
"cell_type": "markdown",
"id": "4ded33f7",
"metadata": {},
"source": [
"### TreeValue's Mapping"
]
},
{
"cell_type": "code",
"execution_count": 2,
"id": "aa9abbed",
"metadata": {
"execution": {
"iopub.execute_input": "2024-10-16T12:55:33.518803Z",
"iopub.status.busy": "2024-10-16T12:55:33.518608Z",
"iopub.status.idle": "2024-10-16T12:55:35.133966Z",
"shell.execute_reply": "2024-10-16T12:55:35.133111Z"
}
},
"outputs": [
{
"name": "stderr",
"output_type": "stream",
"text": [
"/tmp/tmp4q2ykbbk/bd171e47eddd5b95747dbb64747e18068f6b3274/treevalue/tree/integration/torch.py:21: FutureWarning: `torch.utils._pytree._register_pytree_node` is deprecated. Please use `torch.utils._pytree.register_pytree_node` instead.\n",
" register_for_torch(TreeValue)\n",
"/tmp/tmp4q2ykbbk/bd171e47eddd5b95747dbb64747e18068f6b3274/treevalue/tree/integration/torch.py:22: FutureWarning: `torch.utils._pytree._register_pytree_node` is deprecated. Please use `torch.utils._pytree.register_pytree_node` instead.\n",
" register_for_torch(FastTreeValue)\n"
]
},
{
"data": {
"image/jpeg": "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",
"image/png": "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",
"image/svg+xml": [
"\n",
"\n",
"\n",
"\n",
"\n"
],
"text/plain": [
"\n",
"├── 'a' --> 1\n",
"├── 'b' --> 4\n",
"└── 'x' --> \n",
" ├── 'c' --> 9\n",
" └── 'd' --> 16"
]
},
"execution_count": 2,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"from treevalue import mapping, FastTreeValue\n",
"\n",
"t = FastTreeValue(_TREE_DATA_1)\n",
"mapping(t, lambda x: x ** 2)"
]
},
{
"cell_type": "code",
"execution_count": 3,
"id": "4dc3420b",
"metadata": {
"execution": {
"iopub.execute_input": "2024-10-16T12:55:35.136827Z",
"iopub.status.busy": "2024-10-16T12:55:35.136303Z",
"iopub.status.idle": "2024-10-16T12:55:37.255474Z",
"shell.execute_reply": "2024-10-16T12:55:37.254740Z"
}
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"2.61 µs ± 14.3 ns per loop (mean ± std. dev. of 7 runs, 100,000 loops each)\n"
]
}
],
"source": [
"%timeit mapping(t, lambda x: x ** 2)"
]
},
{
"cell_type": "code",
"execution_count": 4,
"id": "289e14c6",
"metadata": {
"execution": {
"iopub.execute_input": "2024-10-16T12:55:37.257795Z",
"iopub.status.busy": "2024-10-16T12:55:37.257393Z",
"iopub.status.idle": "2024-10-16T12:55:37.353216Z",
"shell.execute_reply": "2024-10-16T12:55:37.352394Z"
}
},
"outputs": [
{
"data": {
"image/jpeg": "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oAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigArK8Sf8AIAuv+Af+hitWsrxJ/wAgC6/4B/6GKANWiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACmSyxwRNLK6xxqMszHAAqpfapFaSLbxo1xduMpbx/ePuf7o9zVeLS5buVbnVnWZ1OY7ZP9VH+H8R9z+AFS5dEQ5a2juN+03uscWW+0sj1umXDyD/YU9B/tH8BXP8Aii4t/Dq20Vt4rj0HcGaRGshdSTnP3znLevP+FdxXJ+JPBP8Abeu2et2epvYX9qoRX8lZVIBJHykjn5jUTjLl01ZlVhLlvHV/d92q/Mw/AvjW91bxPd6LdahFqkCxGWC9S38ktjGQVwMdfTt3zXpFchpHgd9M8Yz+IZdXlu5JofLdJYgGJwoLbgcfw9ABgHHauvopKSjaQ8Oqijapvf8AAKKKK1NwooooAKKKKAPHPi+cXQPo8H/oMlbWveIfFHhHW9Ln1K+tbuwv5CsltHAE8nkZCt1bG7gk846Vd8VeD/8AhMNXubY332TyFgk3eV5m7iQY+8MVPL8P3vtbs7zVdcur+0sWzbWskajbyCAzD73QZOMnHWuPknzScep53sqvPKUOr0183e52tFFFdh6IUUUUAFFFFABVK+0yC+KuxaK4j/1c8Rw6fj3HseKu0Umk9xNJqzMhNSuNOdYdXChCcJeIMRt/vj+A/p71rgggEHIPekdFkRkdQysMFSMgisg2N1pRL6X+9turWTtjH/XNu30PH0qdY+aI1j5r8TmvGXiHWvB2tWuptOLvQ7jMT2hVFaN8cbWxk9M857j0rS8CXOuappLavrN6si3h321tGiBYo88cgZJ+pOAPWqkvhu08WeJF1TUb83NraqUTSng2eSxH8fzZJ79BnA7CtLwp4Wm8KpdWseptc6fJIXgt3iw0GT03buR+A559ayip89+nqc8FUdXm+z6/1p5dDpKKKK6DsCiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACsrxJ/yALr/AIB/6GK1ayvEn/IAuv8AgH/oYoA1aKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiqV9q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VRw192VDBc28jmkttVn+5axwD+9M+f0FWY/D7Sc3t5JIP+ecfyL/APXrcoraOHgvM6YYSlHdXILaytrNNtvCkY9hyfxqeiitkrbHQkkrIKKKKBhRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAVleJP+QBdf8AAP8A0MVq1leJP+QBdf8AAP8A0MUAatFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRUN3dw2Vs9xcOEjQcn+g9TRsDdtWJeXkNhbNcTthF4wBksewA7k+lUbKzmubkalqC4mA/cQZyIFP82Pc/gKSztJr25XUdQTYy/8AHtbH/liP7zf7Z/TpWtUL3tWZpczu9goooqzQKKKKACiiigCve2cN/atbzrlG5BBwVPYg9iKp2N5Nb3I03UGzPgmGfGBOo/kw7j8a1KrX1jDqFsYZgRyGV1OGRh0ZT2IqWuqIlF35luWaKzLC+mS4/s7UMC7UZjkAws6j+Ieh9R/StOmncqMlJXCiiimMKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigArK8Sf8gC6/wCAf+hitWsrxJ/yALr/AIB/6GKANWiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiio7i4itYHnnkWOJBlmboBQGwlzcw2du9xcSBIkGWY1zt5qljZGLV/EVylnAD/AKHbSckf7ZUZJf8A9Bz61ftoJdVuEv72Mpbod1rbN2/6aOP73oO31rhfiDbS2XjvRNdvbSW60aBFWXam8RsGYkkfip98VhUk1Hm/r1OWtOSjzpaf1qzvtF8RaT4hikk0q9S5WIgOACpXPTIIBGcH8q1KxdB1/Sdfe5n0pXdUCB5zbtGH+9hQSATjn6bvetqtYu6vc3hLmje9/QKKKKosKKKKACiiigAooooAq39hFqFv5blkdTujlTho2HQg1X0+/laZrC+CpexjORwsy/31/qOxrSqnqGnpfwqN5injO+GZfvRt6j29R3qWuqIlF35o7lyudvfGvh+3vJtN/taBb9QyhMEg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",
"image/png": "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",
"image/svg+xml": [
"\n",
"\n",
"\n",
"\n",
"\n"
],
"text/plain": [
"\n",
"├── 'a' --> (1, ('a',))\n",
"├── 'b' --> (4, ('b',))\n",
"└── 'x' --> \n",
" ├── 'c' --> (9, ('x', 'c'))\n",
" └── 'd' --> (16, ('x', 'd'))"
]
},
"execution_count": 4,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"mapping(t, lambda x, p: (x ** 2, p))"
]
},
{
"cell_type": "code",
"execution_count": 5,
"id": "fce10189",
"metadata": {
"execution": {
"iopub.execute_input": "2024-10-16T12:55:37.355668Z",
"iopub.status.busy": "2024-10-16T12:55:37.355264Z",
"iopub.status.idle": "2024-10-16T12:55:39.543971Z",
"shell.execute_reply": "2024-10-16T12:55:39.543322Z"
}
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"2.69 µs ± 9.34 ns per loop (mean ± std. dev. of 7 runs, 100,000 loops each)\n"
]
}
],
"source": [
"%timeit mapping(t, lambda x, p: (x ** 2, p))"
]
},
{
"cell_type": "markdown",
"id": "18d4346d",
"metadata": {},
"source": [
"### pytree's tree_map"
]
},
{
"cell_type": "code",
"execution_count": 6,
"id": "91b8e706",
"metadata": {
"execution": {
"iopub.execute_input": "2024-10-16T12:55:39.546318Z",
"iopub.status.busy": "2024-10-16T12:55:39.545876Z",
"iopub.status.idle": "2024-10-16T12:55:39.550884Z",
"shell.execute_reply": "2024-10-16T12:55:39.550303Z"
}
},
"outputs": [
{
"data": {
"text/plain": [
"{'a': 1, 'b': 4, 'x': {'c': 9, 'd': 16}}"
]
},
"execution_count": 6,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"from jax.tree_util import tree_map\n",
"\n",
"tree_map(lambda x: x ** 2, _TREE_DATA_1)"
]
},
{
"cell_type": "code",
"execution_count": 7,
"id": "41fa094b",
"metadata": {
"execution": {
"iopub.execute_input": "2024-10-16T12:55:39.552713Z",
"iopub.status.busy": "2024-10-16T12:55:39.552508Z",
"iopub.status.idle": "2024-10-16T12:55:43.286948Z",
"shell.execute_reply": "2024-10-16T12:55:43.286298Z"
}
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"4.6 µs ± 17 ns per loop (mean ± std. dev. of 7 runs, 100,000 loops each)\n"
]
}
],
"source": [
"%timeit tree_map(lambda x: x ** 2, _TREE_DATA_1)"
]
},
{
"cell_type": "markdown",
"id": "36191201",
"metadata": {},
"source": [
"## Flatten and Unflatten Operation"
]
},
{
"cell_type": "markdown",
"id": "a733f250",
"metadata": {},
"source": [
"### TreeValue's Performance"
]
},
{
"cell_type": "code",
"execution_count": 8,
"id": "676f03c0",
"metadata": {
"execution": {
"iopub.execute_input": "2024-10-16T12:55:43.289139Z",
"iopub.status.busy": "2024-10-16T12:55:43.288927Z",
"iopub.status.idle": "2024-10-16T12:55:43.293843Z",
"shell.execute_reply": "2024-10-16T12:55:43.293291Z"
}
},
"outputs": [
{
"data": {
"text/plain": [
"[(('a',), 1), (('b',), 2), (('x', 'c'), 3), (('x', 'd'), 4)]"
]
},
"execution_count": 8,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"from treevalue import flatten, flatten_keys, flatten_values\n",
"\n",
"t_flatted = flatten(t)\n",
"t_flatted"
]
},
{
"cell_type": "code",
"execution_count": 9,
"id": "7ca0363d",
"metadata": {
"execution": {
"iopub.execute_input": "2024-10-16T12:55:43.295738Z",
"iopub.status.busy": "2024-10-16T12:55:43.295537Z",
"iopub.status.idle": "2024-10-16T12:55:47.383621Z",
"shell.execute_reply": "2024-10-16T12:55:47.382969Z"
}
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"504 ns ± 4.2 ns per loop (mean ± std. dev. of 7 runs, 1,000,000 loops each)\n"
]
}
],
"source": [
"%timeit flatten(t)"
]
},
{
"cell_type": "code",
"execution_count": 10,
"id": "62d3bd2d",
"metadata": {
"execution": {
"iopub.execute_input": "2024-10-16T12:55:47.385613Z",
"iopub.status.busy": "2024-10-16T12:55:47.385387Z",
"iopub.status.idle": "2024-10-16T12:55:47.389845Z",
"shell.execute_reply": "2024-10-16T12:55:47.389313Z"
}
},
"outputs": [
{
"data": {
"text/plain": [
"[('a',), ('b',), ('x', 'c'), ('x', 'd')]"
]
},
"execution_count": 10,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"from treevalue import flatten_keys\n",
"\n",
"flatten_keys(t)"
]
},
{
"cell_type": "code",
"execution_count": 11,
"id": "58fbf8c4",
"metadata": {
"execution": {
"iopub.execute_input": "2024-10-16T12:55:47.392025Z",
"iopub.status.busy": "2024-10-16T12:55:47.391632Z",
"iopub.status.idle": "2024-10-16T12:55:51.188042Z",
"shell.execute_reply": "2024-10-16T12:55:51.187391Z"
}
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"467 ns ± 3.71 ns per loop (mean ± std. dev. of 7 runs, 1,000,000 loops each)\n"
]
}
],
"source": [
"%timeit flatten_keys(t)"
]
},
{
"cell_type": "code",
"execution_count": 12,
"id": "1448e341",
"metadata": {
"execution": {
"iopub.execute_input": "2024-10-16T12:55:51.190379Z",
"iopub.status.busy": "2024-10-16T12:55:51.189935Z",
"iopub.status.idle": "2024-10-16T12:55:51.194579Z",
"shell.execute_reply": "2024-10-16T12:55:51.193881Z"
}
},
"outputs": [
{
"data": {
"text/plain": [
"[1, 2, 3, 4]"
]
},
"execution_count": 12,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"from treevalue import flatten_values\n",
"\n",
"flatten_values(t)"
]
},
{
"cell_type": "code",
"execution_count": 13,
"id": "956cf1c1",
"metadata": {
"execution": {
"iopub.execute_input": "2024-10-16T12:55:51.196674Z",
"iopub.status.busy": "2024-10-16T12:55:51.196298Z",
"iopub.status.idle": "2024-10-16T12:55:53.878533Z",
"shell.execute_reply": "2024-10-16T12:55:53.877754Z"
}
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"330 ns ± 3.05 ns per loop (mean ± std. dev. of 7 runs, 1,000,000 loops each)\n"
]
}
],
"source": [
"%timeit flatten_values(t)"
]
},
{
"cell_type": "code",
"execution_count": 14,
"id": "f35e3a6d",
"metadata": {
"execution": {
"iopub.execute_input": "2024-10-16T12:55:53.881084Z",
"iopub.status.busy": "2024-10-16T12:55:53.880636Z",
"iopub.status.idle": "2024-10-16T12:55:53.977653Z",
"shell.execute_reply": "2024-10-16T12:55:53.976846Z"
}
},
"outputs": [
{
"data": {
"image/jpeg": "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",
"image/png": "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",
"image/svg+xml": [
"\n",
"\n",
"\n",
"\n",
"\n"
],
"text/plain": [
"\n",
"├── 'a' --> 1\n",
"├── 'b' --> 2\n",
"└── 'x' --> \n",
" ├── 'c' --> 3\n",
" └── 'd' --> 4"
]
},
"execution_count": 14,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"from treevalue import unflatten\n",
"\n",
"unflatten(t_flatted)"
]
},
{
"cell_type": "code",
"execution_count": 15,
"id": "52980ab8",
"metadata": {
"execution": {
"iopub.execute_input": "2024-10-16T12:55:53.979999Z",
"iopub.status.busy": "2024-10-16T12:55:53.979704Z",
"iopub.status.idle": "2024-10-16T12:55:58.700607Z",
"shell.execute_reply": "2024-10-16T12:55:58.699960Z"
}
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"581 ns ± 3.6 ns per loop (mean ± std. dev. of 7 runs, 1,000,000 loops each)\n"
]
}
],
"source": [
"%timeit unflatten(t_flatted)"
]
},
{
"cell_type": "markdown",
"id": "0ff80a6c",
"metadata": {},
"source": [
"### pytree's Performance"
]
},
{
"cell_type": "code",
"execution_count": 16,
"id": "e89fc565",
"metadata": {
"execution": {
"iopub.execute_input": "2024-10-16T12:55:58.702848Z",
"iopub.status.busy": "2024-10-16T12:55:58.702624Z",
"iopub.status.idle": "2024-10-16T12:55:58.706466Z",
"shell.execute_reply": "2024-10-16T12:55:58.705785Z"
}
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Leaves: [1, 2, 3, 4]\n",
"Treedef: PyTreeDef({'a': *, 'b': *, 'x': {'c': *, 'd': *}})\n"
]
}
],
"source": [
"from jax.tree_util import tree_flatten\n",
"\n",
"leaves, treedef = tree_flatten(_TREE_DATA_1)\n",
"print('Leaves:', leaves)\n",
"print('Treedef:', treedef)"
]
},
{
"cell_type": "code",
"execution_count": 17,
"id": "5d59c4d3",
"metadata": {
"execution": {
"iopub.execute_input": "2024-10-16T12:55:58.708621Z",
"iopub.status.busy": "2024-10-16T12:55:58.708229Z",
"iopub.status.idle": "2024-10-16T12:56:09.818299Z",
"shell.execute_reply": "2024-10-16T12:56:09.817619Z"
}
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"1.37 µs ± 7.22 ns per loop (mean ± std. dev. of 7 runs, 1,000,000 loops each)\n"
]
}
],
"source": [
"%timeit tree_flatten(_TREE_DATA_1)"
]
},
{
"cell_type": "code",
"execution_count": 18,
"id": "bcb1318c",
"metadata": {
"execution": {
"iopub.execute_input": "2024-10-16T12:56:09.820619Z",
"iopub.status.busy": "2024-10-16T12:56:09.820183Z",
"iopub.status.idle": "2024-10-16T12:56:09.824955Z",
"shell.execute_reply": "2024-10-16T12:56:09.824389Z"
}
},
"outputs": [
{
"data": {
"text/plain": [
"{'a': 1, 'b': 2, 'x': {'c': 3, 'd': 4}}"
]
},
"execution_count": 18,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"from jax.tree_util import tree_unflatten\n",
"\n",
"tree_unflatten(treedef, leaves)"
]
},
{
"cell_type": "code",
"execution_count": 19,
"id": "638b5144",
"metadata": {
"execution": {
"iopub.execute_input": "2024-10-16T12:56:09.826870Z",
"iopub.status.busy": "2024-10-16T12:56:09.826666Z",
"iopub.status.idle": "2024-10-16T12:56:15.354698Z",
"shell.execute_reply": "2024-10-16T12:56:15.353951Z"
}
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"682 ns ± 3.09 ns per loop (mean ± std. dev. of 7 runs, 1,000,000 loops each)\n"
]
}
],
"source": [
"%timeit tree_unflatten(treedef, leaves)"
]
},
{
"cell_type": "markdown",
"id": "ffd1522b",
"metadata": {},
"source": [
"## All Operation"
]
},
{
"cell_type": "markdown",
"id": "112c91a1",
"metadata": {},
"source": [
"### TreeValue's Performance"
]
},
{
"cell_type": "code",
"execution_count": 20,
"id": "1b9c1c51",
"metadata": {
"execution": {
"iopub.execute_input": "2024-10-16T12:56:15.357056Z",
"iopub.status.busy": "2024-10-16T12:56:15.356826Z",
"iopub.status.idle": "2024-10-16T12:56:15.361137Z",
"shell.execute_reply": "2024-10-16T12:56:15.360617Z"
}
},
"outputs": [
{
"data": {
"text/plain": [
"True"
]
},
"execution_count": 20,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"all(flatten_values(t))"
]
},
{
"cell_type": "code",
"execution_count": 21,
"id": "fb8b0b2d",
"metadata": {
"execution": {
"iopub.execute_input": "2024-10-16T12:56:15.363001Z",
"iopub.status.busy": "2024-10-16T12:56:15.362800Z",
"iopub.status.idle": "2024-10-16T12:56:18.809587Z",
"shell.execute_reply": "2024-10-16T12:56:18.808923Z"
}
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"424 ns ± 3.85 ns per loop (mean ± std. dev. of 7 runs, 1,000,000 loops each)\n"
]
}
],
"source": [
"%timeit all(flatten_values(t))"
]
},
{
"cell_type": "markdown",
"id": "86462abd",
"metadata": {},
"source": [
"### pytree.tree_all's performance"
]
},
{
"cell_type": "code",
"execution_count": 22,
"id": "64d39484",
"metadata": {
"execution": {
"iopub.execute_input": "2024-10-16T12:56:18.811980Z",
"iopub.status.busy": "2024-10-16T12:56:18.811577Z",
"iopub.status.idle": "2024-10-16T12:56:18.814818Z",
"shell.execute_reply": "2024-10-16T12:56:18.814251Z"
}
},
"outputs": [],
"source": [
"from jax.tree_util import tree_all"
]
},
{
"cell_type": "code",
"execution_count": 23,
"id": "6a8427db",
"metadata": {
"execution": {
"iopub.execute_input": "2024-10-16T12:56:18.816900Z",
"iopub.status.busy": "2024-10-16T12:56:18.816528Z",
"iopub.status.idle": "2024-10-16T12:56:18.820804Z",
"shell.execute_reply": "2024-10-16T12:56:18.820144Z"
}
},
"outputs": [
{
"data": {
"text/plain": [
"True"
]
},
"execution_count": 23,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"tree_all(_TREE_DATA_1)"
]
},
{
"cell_type": "code",
"execution_count": 24,
"id": "e4a4cd59",
"metadata": {
"execution": {
"iopub.execute_input": "2024-10-16T12:56:18.822899Z",
"iopub.status.busy": "2024-10-16T12:56:18.822540Z",
"iopub.status.idle": "2024-10-16T12:56:31.562722Z",
"shell.execute_reply": "2024-10-16T12:56:31.561966Z"
}
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"1.57 µs ± 7.52 ns per loop (mean ± std. dev. of 7 runs, 1,000,000 loops each)\n"
]
}
],
"source": [
"%timeit tree_all(_TREE_DATA_1)"
]
},
{
"cell_type": "markdown",
"id": "f0221182",
"metadata": {},
"source": [
"## Reduce Operation"
]
},
{
"cell_type": "markdown",
"id": "646b4a2e",
"metadata": {},
"source": [
"### TreeValue's Reduce"
]
},
{
"cell_type": "code",
"execution_count": 25,
"id": "105e9001",
"metadata": {
"execution": {
"iopub.execute_input": "2024-10-16T12:56:31.565176Z",
"iopub.status.busy": "2024-10-16T12:56:31.564676Z",
"iopub.status.idle": "2024-10-16T12:56:31.569786Z",
"shell.execute_reply": "2024-10-16T12:56:31.569104Z"
}
},
"outputs": [
{
"data": {
"text/plain": [
"10"
]
},
"execution_count": 25,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"from functools import reduce\n",
"\n",
"def _flatten_reduce(tree):\n",
" values = flatten_values(tree)\n",
" return reduce(lambda x, y: x + y, values)\n",
"\n",
"_flatten_reduce(t)"
]
},
{
"cell_type": "code",
"execution_count": 26,
"id": "71c145c0",
"metadata": {
"execution": {
"iopub.execute_input": "2024-10-16T12:56:31.571814Z",
"iopub.status.busy": "2024-10-16T12:56:31.571463Z",
"iopub.status.idle": "2024-10-16T12:56:38.345100Z",
"shell.execute_reply": "2024-10-16T12:56:38.344360Z"
}
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"834 ns ± 6.28 ns per loop (mean ± std. dev. of 7 runs, 1,000,000 loops each)\n"
]
}
],
"source": [
"%timeit _flatten_reduce(t)"
]
},
{
"cell_type": "code",
"execution_count": 27,
"id": "20b34964",
"metadata": {
"execution": {
"iopub.execute_input": "2024-10-16T12:56:38.347437Z",
"iopub.status.busy": "2024-10-16T12:56:38.347196Z",
"iopub.status.idle": "2024-10-16T12:56:38.352213Z",
"shell.execute_reply": "2024-10-16T12:56:38.351557Z"
}
},
"outputs": [
{
"data": {
"text/plain": [
"10"
]
},
"execution_count": 27,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"def _flatten_reduce_with_init(tree):\n",
" values = flatten_values(tree)\n",
" return reduce(lambda x, y: x + y, values, 0)\n",
"\n",
"_flatten_reduce_with_init(t)"
]
},
{
"cell_type": "code",
"execution_count": 28,
"id": "ca8562c5",
"metadata": {
"execution": {
"iopub.execute_input": "2024-10-16T12:56:38.354428Z",
"iopub.status.busy": "2024-10-16T12:56:38.353946Z",
"iopub.status.idle": "2024-10-16T12:56:45.604441Z",
"shell.execute_reply": "2024-10-16T12:56:45.603708Z"
}
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"894 ns ± 8.63 ns per loop (mean ± std. dev. of 7 runs, 1,000,000 loops each)\n"
]
}
],
"source": [
"%timeit _flatten_reduce_with_init(t)"
]
},
{
"cell_type": "markdown",
"id": "12b2a28a",
"metadata": {},
"source": [
"### pytree.tree_reduce"
]
},
{
"cell_type": "code",
"execution_count": 29,
"id": "14e9237e",
"metadata": {
"execution": {
"iopub.execute_input": "2024-10-16T12:56:45.606947Z",
"iopub.status.busy": "2024-10-16T12:56:45.606430Z",
"iopub.status.idle": "2024-10-16T12:56:45.611147Z",
"shell.execute_reply": "2024-10-16T12:56:45.610483Z"
}
},
"outputs": [
{
"data": {
"text/plain": [
"10"
]
},
"execution_count": 29,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"from jax.tree_util import tree_reduce\n",
"\n",
"tree_reduce(lambda x, y: x + y, _TREE_DATA_1)"
]
},
{
"cell_type": "code",
"execution_count": 30,
"id": "f6c5cfda",
"metadata": {
"execution": {
"iopub.execute_input": "2024-10-16T12:56:45.613154Z",
"iopub.status.busy": "2024-10-16T12:56:45.612787Z",
"iopub.status.idle": "2024-10-16T12:56:47.301242Z",
"shell.execute_reply": "2024-10-16T12:56:47.300617Z"
}
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"2.08 µs ± 8.55 ns per loop (mean ± std. dev. of 7 runs, 100,000 loops each)\n"
]
}
],
"source": [
"%timeit tree_reduce(lambda x, y: x + y, _TREE_DATA_1)"
]
},
{
"cell_type": "code",
"execution_count": 31,
"id": "e79fb73b",
"metadata": {
"execution": {
"iopub.execute_input": "2024-10-16T12:56:47.303428Z",
"iopub.status.busy": "2024-10-16T12:56:47.303039Z",
"iopub.status.idle": "2024-10-16T12:56:47.307486Z",
"shell.execute_reply": "2024-10-16T12:56:47.306930Z"
}
},
"outputs": [
{
"data": {
"text/plain": [
"10"
]
},
"execution_count": 31,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"tree_reduce(lambda x, y: x + y, _TREE_DATA_1, 0)"
]
},
{
"cell_type": "code",
"execution_count": 32,
"id": "af47dd74",
"metadata": {
"execution": {
"iopub.execute_input": "2024-10-16T12:56:47.309616Z",
"iopub.status.busy": "2024-10-16T12:56:47.309155Z",
"iopub.status.idle": "2024-10-16T12:56:49.052605Z",
"shell.execute_reply": "2024-10-16T12:56:49.051852Z"
}
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"2.14 µs ± 6.99 ns per loop (mean ± std. dev. of 7 runs, 100,000 loops each)\n"
]
}
],
"source": [
"%timeit tree_reduce(lambda x, y: x + y, _TREE_DATA_1, 0)"
]
},
{
"cell_type": "markdown",
"id": "6e58b70f",
"metadata": {},
"source": [
"## Structure Transpose"
]
},
{
"cell_type": "markdown",
"id": "a4a31f9e",
"metadata": {},
"source": [
"### Subside and Rise in TreeValue"
]
},
{
"cell_type": "code",
"execution_count": 33,
"id": "b6af689f",
"metadata": {
"execution": {
"iopub.execute_input": "2024-10-16T12:56:49.055112Z",
"iopub.status.busy": "2024-10-16T12:56:49.054677Z",
"iopub.status.idle": "2024-10-16T12:56:49.165001Z",
"shell.execute_reply": "2024-10-16T12:56:49.164254Z"
}
},
"outputs": [
{
"data": {
"image/jpeg": "/9j/4AAQSkZJRgABAQEAYABgAAD//gA+Q1JFQVRPUjogZ2QtanBlZyB2MS4wICh1c2luZyBJSkcgSlBFRyB2ODApLCBkZWZhdWx0IHF1YWxpdHkK/9sAQwAIBgYHBgUIBwcHCQkICgwUDQwLCwwZEhMPFB0aHx4dGhwcICQuJyAiLCMcHCg3KSwwMTQ0NB8nOT04MjwuMzQy/9sAQwEJCQkMCwwYDQ0YMiEcITIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIy/8AAEQgBIwRsAwEiAAIRAQMRAf/EAB8AAAEFAQEBAQEBAAAAAAAAAAABAgMEBQYHCAkKC//EALUQAAIBAwMCBAMFBQQEAAABfQECAwAEEQUSITFBBhNRYQcicRQygZGhCCNCscEVUtHwJDNicoIJChYXGBkaJSYnKCkqNDU2Nzg5OkNERUZHSElKU1RVVldYWVpjZGVmZ2hpanN0dXZ3eHl6g4SFhoeIiYqSk5SVlpeYmZqio6Slpqeoqaqys7S1tre4ubrCw8TFxsfIycrS09TV1tfY2drh4uPk5ebn6Onq8fLz9PX29/j5+v/EAB8BAAMBAQEBAQEBAQEAAAAAAAABAgMEBQYHCAkKC//EALURAAIBAgQEAwQHBQQEAAECdwABAgMRBAUhMQYSQVEHYXETIjKBCBRCkaGxwQkjM1LwFWJy0QoWJDThJfEXGBkaJicoKSo1Njc4OTpDREVGR0hJSlNUVVZXWFlaY2RlZmdoaWpzdHV2d3h5eoKDhIWGh4iJipKTlJWWl5iZmqKjpKWmp6ipqrKztLW2t7i5usLDxMXGx8jJytLT1NXW19jZ2uLj5OXm5+jp6vLz9PX29/j5+v/aAAwDAQACEQMRAD8A9/ooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiqdxqtja5EtygYfwqcn8hWPc+LoVO22gZ27Fjj9BUSqQjuzKdanD4mdJUU1zBbrmaZIx/tNiuSk1HW7/wC7mBD6fJ/9eol0d5G33NyzMeoX/E1hLFL7KOWeOj9lXNy68UWEGRHvlb2GB+tUY/GHz/vbXEZ6EMc/qOabDp9rBykKk+rcn9asMiuu1lDD0IzWLxFRs53i6rd1oaFtr+nXOMT+WT2kGP16VpKyuoZWDKehBzXIS6TaSHKoY29UOP0quNPvrRt1ndn6ZKn9OtaRxT+0jWGOa+NHcUVyEfiDVbLi6g8xR/EV/qK0rXxVYz4EoeJv++h+nP6VtGvCXU6oYqlPqbtFQwXdvcjMEySf7rc1NW17m6aewUUUUDCiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAoqre3M9umYbR5z/ssBj+v6Vy194i1MMUEfkewXn9aznVjDcxq1409zsXkSNS0jqqjuxwKzLnxDp1tn96ZT6RjP69K5GI/b3DXWoYb+62c/ma1IdLs48Ns8w/3nOf/rVzSxTfwo45Y5v4ESS+KrmclLK1/Egsf8KqSLrF/wD8fFxsQ/wlv6DitNVCjCgADsKWsZVJy3ZyzrVJ/EzNi0WBeZneU+hOB+lXooIYBiKNU+gqSvOPGH/CT/23L9p/tL/hGsDH9jbfO6DO/wDixnPTjFQlchRuz0NJ4ZJJI0lRpI8b1VgSuemR2qSvNl/4Rj/hWviH/hGs7Ps7/aN+/wAzftP3t3OevtUvgbwdYSeH9F1uSW6bUlRZVl89sKgP+rC5xtxx0p2Hyo9Eorw60tLXWvBeu+KNVvp11+3ncxyeeyGAjBVAueMkkfy6Vpy3Nx4o1zwhpWvzSrYXWnC4lQOYxcS4bGSMddqn8eOtPlHyHr1Y+g+JLPxC18LSKdPsVwbeTzVAyw7jBPH5VxHhTTrW91fxT4TlaS98PQvGY42lYiM5ztDA56j1/h+tU/hx4V0O71PV7iezDXGm6mRanzXBjCnK8A88jvnpRZBypJnq8U8NwpaGVJFDFSUYEAjqOO9RzWFrPzJCufUcH9K8w1v+wv7cuv8AhEzrP9veY3nf2Xu8vzMnPm7vlxnPTiu+8Lf27/YcX/CReV/aGTu8vH3e2ccZ+nFJoTjoSPoxU7re4dCOgbn9akjvtcsO5nQf8D/+vWjRQpOOzCMpR+F2GW/i6POy7t2Ru5X/AAP+Na9tq9hdY8u5QMf4X+U/rWRJDFMMSRq4/wBoZrOuNKtFUuJTb++7j9a2jiZrfU6IYypH4tTtqK87TULqwkC2l6ZFH93OPyPFb2na9qU+A1iZx/eQY/M9K3hiIyOunjIT0sdNRTInZ4wzxtGx6qSCR+VProOsKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigApksMUy7ZY0dfRhmn0UAY914a0+4yVRom/2Dx+RrKl8MX1qS1ldbh/dzt/TpXW0VlKjCW6MJ4alPdHEPcapYnF3bblH8RG3P49Kli1m2fAkDxH/aHH5iuyIyMGqFzo1hdZ326hj/Enyn9Kwlhf5Wcs8D/IzJjljlXdG6uPVTmn1FceEVDb7S5KN2DcfqP8KpS22tacpZ182NeSSNwx9Rz+dYypTjujlnh6sN0TXel2N7a3VvPbI0d2uyfb8pkHTkjB/WpLCxttMsIbKzj8u3hXZGm4ttH1PNZ9t4gimTc8Tbc43pyK0Ib22uP9XMpPoTg/lWdzK5jXngXwxf6kdQudHgkuWbczZYBj6lQdp/EVd1jw5pGvW0dvqdhFcRxf6sHKlPoQQR+FalFF2O7KGkaJpug2n2XS7OO2hJ3ELklj6knk/jWdJ4H8OS60usNpiC/WYTiVZHX94DndtBwTnnpzW+SFGSQAO5qpNqlp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8EYIwfWt/wAJ+FLTwlpbWlvI80kj+ZNM4wXbp07D2rnpQnFq/mcmHpVYOKei1vr9xv0UUV1HcFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFAEc8EVzC0M8ayRsMMrDINZf2a+0jmzLXlmOts7fvIx/sMeo9j+dbFFJxuTKKevUrWV/bahEXt5MlTh0IwyH0YHkGotYm+z6Pdy/2gmn7Yzi7dQwiPZsHg/TvSXulRXUouIne2vFGFuIuv0YdGHsaxddgXVdHn0TX82yXGFS9h/1bMCCvX7pyBweD2NRKTSdyJSkotP+v8jgb/4g3+jSQT2fi+HXh5gWW2fTPs/y9yGA/Dr3717JFIssSSL911DDPoa89u/hjd3/AIet9JuPE0rw20gaAfZFCIoBGNoYEnn7xJ7+tegwReTbxxZ3bEC5xjOBiooqab5v6/FmWGjVTfPtp/W7JKKKK3OoKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKr/AGxG1D7GnMix+Y/+yM4A/Hn8qLy+trCHzbmUIucAdSx9AOpPsKV0LmVrlisy41YtO1pp0X2q6Xh+cRxf77f0HNReXf6vzP5ljZH/AJZKcTSD/aI+4PYc+4rTtraC0gWC3iWKJeiqMCpu3sReUttEUrXSQJ1u76X7VeD7rMMJH7Ivb69fetKiiqSS2LUVHYKKKKYwooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKbJGksbRyIrowwysMginUUAY5sbvSjv0w+dbDrZyN0/65sen0PH0q7Y6lb36sIiyypxJDINrofcf5FW6pX2mQXzLKS0VzH/AKu4iOHX8e49jxU2a2M+Vx+H7i7RWQupXOmsI9WVTFnC3sYwh/3x/Affp9K1lZXUMpDKRkEHIIppplRkmLRRRTKCiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKoXOs2Fqdr3Kl/7qfMf0pNpbilJRV2y/RWI/iCR/+PbT5nH96QhBUDalq0nT7LCPYFj/AIVk8RTXU55YukutzoqK5ln1KT/Wak//AACMLUZt5m+/qF43/bXAqHio9EZvHQ6JnVUVyZslP3p7hvrKaPsEX9+b/v4an60uxP15fynWUVyf2JR92e4X6SmnC3mX7moXi/8AbXIp/Wl2BY6PWJ1VUtV1KDSNNmvZz8sY4XuzdgPqaxlfUo/9XqT/APA4w1Y+u6dquuGFZ7yPyITuCIu0s3qe1EsSraLUJ46PK+Vah4R1S6vPt00aLLqN5Pukkc4jiQDC+7Y5wB+YrrrPSY4J/tVxI11eEY86QfdHoo6KPpXC2vhnSLcg31jfyEdWWUEfkoBrrtIfRLcBLKUxkcbJJXz+TGlQldJP8xYWd0lJr7/0sblFFFdZ6AUUUUAFFFUdRlki8rY5XOc4/CpnLkjzMipNU4uTL1FYf2qf/nq/50fap/8Anq/51h9aj2OX69DsblFYf2qf/nq/50fap/8Anq/50fWo9g+vQ7G5RWH9qn/56v8AnR9qn/56v+dH1qPYPr0OxuUVh/ap/wDnq/50fap/+er/AJ0fWo9g+vQ7G5RWH9qn/wCer/nR9qn/AOer/nR9aj2D69DsblFYf2qf/nq/50fap/8Anq/50fWo9g+vQ7G5RWH9qn/56v8AnR9qn/56v+dH1qPYPr0OxuUVh/ap/wDnq/50fap/+er/AJ0fWo9g+vQ7G5RWH9qn/wCer/nR9qn/AOer/nR9aj2D69DsblFYf2qf/nq/50fap/8Anq/50fWo9g+vQ7G5RWH9qn/56v8AnR9qn/56v+dH1qPYPr0OxuUVh/ap/wDnq/50fap/+er/AJ0fWo9g+vQ7G2yhlKsAQRgg96yW02405jLpDL5ectZSH92f9w/wH9PaovtU/wDz1f8AOj7V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jRWz7JBHCyKG+pAB6ds1sVzHw/0P+wfB9nA6bbiYfaJvXc3OD9BgfhXT1pC7irm1JycE5bhRRRVmgUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFAEVxbQXcJiuIY5Yz1V1BFZ39lXNnzpd60aj/l3uMyR/QH7y/gfwrWopOKZLgnqZP8AbLWp26paSWv/AE2X95Cf+BDkfiBWnFLHPGskUiyI3IZDkH8aeRkYNZkuh24kaayeSxnPJa3OFY/7SfdP5UveXmL3l5mnRWT9r1Sx4u7UXkQ/5bWgw34xn+hP0q5Z6lZ34Jtp1cr95OjL9VPI/GhST0Gppu3Uq/8ACR6V/b39hm626jt3CF43XcMZ4YjB49D2PpRpXiLStcnuYtNuvtDWzbZWWNwoPoGIwenYmvP/AIigeJvElhoOiQCXWLcNJLcq23yUx90kfgfbIHc1tfC7ULI6A2jpbC01GxcrdwN95mzjf7+ntjHTFZRqt1OXoc0a8nW5NLd/09TuqKKK3OsKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKZLLHBG0k0iRxryWc4A/Gsz+2Xu/l0q0e6/6bP8Au4h/wI8t+ANJySJcktzWrOuNatYpTBDvu7kdYbdd5H1PRfxIqL+yri851S9aRT/y72+Y4/of4m/E/hWjb20FrCIreFIox0VFAFL3n5CvJ7aGd5Or3/8Arpk0+E/8s4MPKfq54H4A/WrVnpVnYsXhhBmb70zktI31Y81cooUVuCgk7vVhRRRVFhXJ614Mm8Q65Dc6nrDy6XBKssWnCBVAIABy+csCc9R3IrrKKmUVJWZE4RmrSCiiiqLCiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKp3ml2d+Q88I81fuyoSrr9GHNXKKTSe4mk1ZmT5GrW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",
"image/png": "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",
"image/svg+xml": [
"\n",
"\n",
"\n",
"\n",
"\n"
],
"text/plain": [
"\n",
"├── 'a' --> {'a': 1, 'b': 10, 'c': {'x': 100, 'y': 400}}\n",
"└── 'b' --> \n",
" ├── 'x' --> {'a': 2, 'b': 20, 'c': {'x': 200, 'y': 500}}\n",
" └── 'y' --> {'a': 3, 'b': 30, 'c': {'x': 300, 'y': 600}}"
]
},
"execution_count": 33,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"from treevalue import subside\n",
"\n",
"value = {\n",
" 'a': FastTreeValue({'a': 1, 'b': {'x': 2, 'y': 3}}),\n",
" 'b': FastTreeValue({'a': 10, 'b': {'x': 20, 'y': 30}}),\n",
" 'c': {\n",
" 'x': FastTreeValue({'a': 100, 'b': {'x': 200, 'y': 300}}),\n",
" 'y': FastTreeValue({'a': 400, 'b': {'x': 500, 'y': 600}}),\n",
" },\n",
"}\n",
"subside(value)"
]
},
{
"cell_type": "code",
"execution_count": 34,
"id": "b85caa84",
"metadata": {
"execution": {
"iopub.execute_input": "2024-10-16T12:56:49.167489Z",
"iopub.status.busy": "2024-10-16T12:56:49.167055Z",
"iopub.status.idle": "2024-10-16T12:56:57.519228Z",
"shell.execute_reply": "2024-10-16T12:56:57.518502Z"
}
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"10.3 µs ± 45.3 ns per loop (mean ± std. dev. of 7 runs, 100,000 loops each)\n"
]
}
],
"source": [
"%timeit subside(value)"
]
},
{
"cell_type": "code",
"execution_count": 35,
"id": "f304d286",
"metadata": {
"execution": {
"iopub.execute_input": "2024-10-16T12:56:57.521555Z",
"iopub.status.busy": "2024-10-16T12:56:57.521130Z",
"iopub.status.idle": "2024-10-16T12:56:57.527729Z",
"shell.execute_reply": "2024-10-16T12:56:57.527180Z"
}
},
"outputs": [
{
"data": {
"text/plain": [
"{'b': {'y': \n",
" ├── 'a' --> 3\n",
" ├── 'b' --> 30\n",
" └── 'c' --> \n",
" ├── 'x' --> 300\n",
" └── 'y' --> 600,\n",
" 'x': \n",
" ├── 'a' --> 2\n",
" ├── 'b' --> 20\n",
" └── 'c' --> \n",
" ├── 'x' --> 200\n",
" └── 'y' --> 500},\n",
" 'a': \n",
" ├── 'a' --> 1\n",
" ├── 'b' --> 10\n",
" └── 'c' --> \n",
" ├── 'x' --> 100\n",
" └── 'y' --> 400}"
]
},
"execution_count": 35,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"from treevalue import raw, rise\n",
"\n",
"value = FastTreeValue({\n",
" 'a': raw({'a': 1, 'b': {'x': 2, 'y': 3}}),\n",
" 'b': raw({'a': 10, 'b': {'x': 20, 'y': 30}}),\n",
" 'c': {\n",
" 'x': raw({'a': 100, 'b': {'x': 200, 'y': 300}}),\n",
" 'y': raw({'a': 400, 'b': {'x': 500, 'y': 600}}),\n",
" },\n",
"})\n",
"rise(value)"
]
},
{
"cell_type": "code",
"execution_count": 36,
"id": "62d34321",
"metadata": {
"execution": {
"iopub.execute_input": "2024-10-16T12:56:57.529867Z",
"iopub.status.busy": "2024-10-16T12:56:57.529470Z",
"iopub.status.idle": "2024-10-16T12:57:06.760111Z",
"shell.execute_reply": "2024-10-16T12:57:06.759456Z"
}
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"11.3 µs ± 74.1 ns per loop (mean ± std. dev. of 7 runs, 100,000 loops each)\n"
]
}
],
"source": [
"%timeit rise(value)"
]
},
{
"cell_type": "code",
"execution_count": 37,
"id": "f0ed4793",
"metadata": {
"execution": {
"iopub.execute_input": "2024-10-16T12:57:06.762207Z",
"iopub.status.busy": "2024-10-16T12:57:06.761970Z",
"iopub.status.idle": "2024-10-16T12:57:06.767025Z",
"shell.execute_reply": "2024-10-16T12:57:06.766464Z"
}
},
"outputs": [
{
"data": {
"text/plain": [
"{'a': \n",
" ├── 'a' --> 1\n",
" ├── 'b' --> 10\n",
" └── 'c' --> \n",
" ├── 'x' --> 100\n",
" └── 'y' --> 400,\n",
" 'b': {'x': \n",
" ├── 'a' --> 2\n",
" ├── 'b' --> 20\n",
" └── 'c' --> \n",
" ├── 'x' --> 200\n",
" └── 'y' --> 500,\n",
" 'y': \n",
" ├── 'a' --> 3\n",
" ├── 'b' --> 30\n",
" └── 'c' --> \n",
" ├── 'x' --> 300\n",
" └── 'y' --> 600}}"
]
},
"execution_count": 37,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"vt = {'a': None, 'b': {'x': None, 'y': None}}\n",
"rise(value, template=vt)"
]
},
{
"cell_type": "code",
"execution_count": 38,
"id": "a6ad3639",
"metadata": {
"execution": {
"iopub.execute_input": "2024-10-16T12:57:06.768987Z",
"iopub.status.busy": "2024-10-16T12:57:06.768780Z",
"iopub.status.idle": "2024-10-16T12:57:14.149489Z",
"shell.execute_reply": "2024-10-16T12:57:14.148782Z"
}
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"9.09 µs ± 43 ns per loop (mean ± std. dev. of 7 runs, 100,000 loops each)\n"
]
}
],
"source": [
"%timeit rise(value, template=vt)"
]
},
{
"cell_type": "markdown",
"id": "19ee26c6",
"metadata": {},
"source": [
"### pytree.tree_transpose"
]
},
{
"cell_type": "code",
"execution_count": 39,
"id": "7f24f0f6",
"metadata": {
"execution": {
"iopub.execute_input": "2024-10-16T12:57:14.151841Z",
"iopub.status.busy": "2024-10-16T12:57:14.151463Z",
"iopub.status.idle": "2024-10-16T12:57:14.158640Z",
"shell.execute_reply": "2024-10-16T12:57:14.158056Z"
}
},
"outputs": [
{
"data": {
"text/plain": [
"{'a': {'a': 1, 'b': 10, 'c': {'x': 100, 'y': 400}},\n",
" 'b': {'x': {'a': 2, 'b': 20, 'c': {'x': 200, 'y': 500}},\n",
" 'y': {'a': 3, 'b': 30, 'c': {'x': 300, 'y': 600}}}}"
]
},
"execution_count": 39,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"from jax.tree_util import tree_structure, tree_transpose\n",
"\n",
"sto = tree_structure({'a': 1, 'b': 2, 'c': {'x': 3, 'y': 4}})\n",
"sti = tree_structure({'a': 1, 'b': {'x': 2, 'y': 3}})\n",
"\n",
"value = (\n",
" {'a': 1, 'b': {'x': 2, 'y': 3}},\n",
" {\n",
" 'a': {'a': 10, 'b': {'x': 20, 'y': 30}},\n",
" 'b': [\n",
" {'a': 100, 'b': {'x': 200, 'y': 300}},\n",
" {'a': 400, 'b': {'x': 500, 'y': 600}},\n",
" ],\n",
" }\n",
")\n",
"tree_transpose(sto, sti, value)"
]
},
{
"cell_type": "code",
"execution_count": 40,
"id": "d04072f3",
"metadata": {
"execution": {
"iopub.execute_input": "2024-10-16T12:57:14.160760Z",
"iopub.status.busy": "2024-10-16T12:57:14.160277Z",
"iopub.status.idle": "2024-10-16T12:57:22.322820Z",
"shell.execute_reply": "2024-10-16T12:57:22.322103Z"
}
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"10.1 µs ± 83.7 ns per loop (mean ± std. dev. of 7 runs, 100,000 loops each)\n"
]
}
],
"source": [
"%timeit tree_transpose(sto, sti, value)"
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "f2a580a3",
"metadata": {},
"outputs": [],
"source": []
}
],
"metadata": {
"kernelspec": {
"display_name": "Python 3 (ipykernel)",
"language": "python",
"name": "python3"
},
"language_info": {
"codemirror_mode": {
"name": "ipython",
"version": 3
},
"file_extension": ".py",
"mimetype": "text/x-python",
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython3",
"version": "3.8.18"
}
},
"nbformat": 4,
"nbformat_minor": 5
}