From 4df99eb485b068f2d900ee31ee42777047bd34cf Mon Sep 17 00:00:00 2001 From: rnyak Date: Thu, 28 Apr 2022 00:11:08 -0400 Subject: [PATCH] remove tf_memory_allocation command (#1527) --- .../03-Training-with-TF.ipynb | 128 +++++++++++------- 1 file changed, 76 insertions(+), 52 deletions(-) diff --git a/examples/getting-started-movielens/03-Training-with-TF.ipynb b/examples/getting-started-movielens/03-Training-with-TF.ipynb index b14d3e2e139..30d019b78b3 100644 --- a/examples/getting-started-movielens/03-Training-with-TF.ipynb +++ b/examples/getting-started-movielens/03-Training-with-TF.ipynb @@ -2,7 +2,7 @@ "cells": [ { "cell_type": "code", - "execution_count": null, + "execution_count": 1, "metadata": {}, "outputs": [], "source": [ @@ -172,7 +172,7 @@ { "data": { "text/plain": [ - "{'userId': (162542, 512), 'movieId': (56662, 512), 'genres': (21, 16)}" + "{'userId': (162542, 512), 'movieId': (56747, 512), 'genres': (21, 16)}" ] }, "execution_count": 7, @@ -210,10 +210,6 @@ "import time\n", "import tensorflow as tf\n", "\n", - "# we can control how much memory to give tensorflow with this environment variable\n", - "# IMPORTANT: make sure you do this before you initialize TF's runtime, otherwise\n", - "# TF will have claimed all free GPU memory\n", - "os.environ[\"TF_MEMORY_ALLOCATION\"] = \"0.7\" # fraction of free memory\n", "from nvtabular.loader.tensorflow import KerasSequenceLoader, KerasSequenceValidater\n", "from nvtabular.framework_utils.tensorflow import layers" ] @@ -229,7 +225,16 @@ "cell_type": "code", "execution_count": 9, "metadata": {}, - "outputs": [], + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/usr/local/lib/python3.8/dist-packages/cudf/core/dataframe.py:1292: UserWarning: The deep parameter is ignored and is only included for pandas compatibility.\n", + " warnings.warn(\n" + ] + } + ], "source": [ "train_dataset_tf = KerasSequenceLoader(\n", " TRAIN_PATHS, # you could also use a glob pattern\n", @@ -281,46 +286,47 @@ "name": "stderr", "output_type": "stream", "text": [ - "2021-12-02 01:17:48.483489: I tensorflow/core/platform/cpu_feature_guard.cc:142] This TensorFlow binary is optimized with oneAPI Deep Neural Network Library (oneDNN) to use the following CPU instructions in performance-critical operations: AVX2 AVX512F FMA\n", + "2022-04-27 22:12:40.128861: I tensorflow/core/platform/cpu_feature_guard.cc:152] This TensorFlow binary is optimized with oneAPI Deep Neural Network Library (oneDNN) to use the following CPU instructions in performance-critical operations: SSE3 SSE4.1 SSE4.2 AVX\n", "To enable them in other operations, rebuild TensorFlow with the appropriate compiler flags.\n", - "2021-12-02 01:17:48.490106: I tensorflow/core/common_runtime/gpu/gpu_device.cc:1510] Created device /job:localhost/replica:0/task:0/device:GPU:0 with 22755 MB memory: -> device: 0, name: Quadro GV100, pci bus id: 0000:15:00.0, compute capability: 7.0\n" + "2022-04-27 22:12:41.479738: I tensorflow/core/common_runtime/gpu/gpu_device.cc:1525] Created device /job:localhost/replica:0/task:0/device:GPU:0 with 16254 MB memory: -> device: 0, name: Quadro GV100, pci bus id: 0000:15:00.0, compute capability: 7.0\n", + "2022-04-27 22:12:41.480359: I tensorflow/core/common_runtime/gpu/gpu_device.cc:1525] Created device /job:localhost/replica:0/task:0/device:GPU:1 with 30382 MB memory: -> device: 1, name: Quadro GV100, pci bus id: 0000:2d:00.0, compute capability: 7.0\n" ] }, { "data": { "text/plain": [ - "{'genres': (,\n", + " [ 7],\n", + " [17]])>,\n", " ),\n", + " [4]], dtype=int32)>),\n", " 'movieId': ,\n", + " [ 410],\n", + " [1153],\n", + " [ 460]])>,\n", " 'userId': }" + " [134355],\n", + " [ 14751],\n", + " [ 10238]])>}" ] }, "execution_count": 10, @@ -348,7 +354,7 @@ { "data": { "text/plain": [ - "" + "" ] }, "execution_count": 11, @@ -449,9 +455,9 @@ { "data": { "text/plain": [ - "[EmbeddingColumn(categorical_column=IdentityCategoricalColumn(key='movieId', number_buckets=56662, default_value=None), dimension=512, combiner='mean', initializer=, ckpt_to_load_from=None, tensor_name_in_ckpt=None, max_norm=None, trainable=True, use_safe_embedding_lookup=True),\n", - " EmbeddingColumn(categorical_column=IdentityCategoricalColumn(key='userId', number_buckets=162542, default_value=None), dimension=512, combiner='mean', initializer=, ckpt_to_load_from=None, tensor_name_in_ckpt=None, max_norm=None, trainable=True, use_safe_embedding_lookup=True),\n", - " EmbeddingColumn(categorical_column=IdentityCategoricalColumn(key='genres', number_buckets=21, default_value=None), dimension=16, combiner='mean', initializer=, ckpt_to_load_from=None, tensor_name_in_ckpt=None, max_norm=None, trainable=True, use_safe_embedding_lookup=True)]" + "[EmbeddingColumn(categorical_column=IdentityCategoricalColumn(key='movieId', number_buckets=56747, default_value=None), dimension=512, combiner='mean', initializer=, ckpt_to_load_from=None, tensor_name_in_ckpt=None, max_norm=None, trainable=True, use_safe_embedding_lookup=True),\n", + " EmbeddingColumn(categorical_column=IdentityCategoricalColumn(key='userId', number_buckets=162542, default_value=None), dimension=512, combiner='mean', initializer=, ckpt_to_load_from=None, tensor_name_in_ckpt=None, max_norm=None, trainable=True, use_safe_embedding_lookup=True),\n", + " EmbeddingColumn(categorical_column=IdentityCategoricalColumn(key='genres', number_buckets=21, default_value=None), dimension=16, combiner='mean', initializer=, ckpt_to_load_from=None, tensor_name_in_ckpt=None, max_norm=None, trainable=True, use_safe_embedding_lookup=True)]" ] }, "execution_count": 15, @@ -516,7 +522,7 @@ { "data": { "text/plain": [ - "{'userId': (162542, 512), 'movieId': (56662, 512), 'genres': (21, 16)}" + "{'userId': (162542, 512), 'movieId': (56747, 512), 'genres': (21, 16)}" ] }, "execution_count": 17, @@ -557,7 +563,7 @@ "outputs": [ { "data": { - "image/png": "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/vvvv2YdHx8fjRs3Tu+9914VRVV54uLiNHHiROXk5DiuGW9vby1evFgPP/ywo15hYaH27dunhIQElo4EAA9AggEAUOukp6c7rViRnJys3NxcNW7cWF27dnX0dIiKinJ0rX7vvff061//2qn7v91ul81m07PPPqtnn322UuZ98ARLly7VmDFjrlvPZrOpbt262rt3b42bQ8Ad6enp6tixo86fP+80d0Vp/vnPf143GVFdHT9+XJMmTdKaNWtks9l05ddQHx8fjRw5Ui+++GKxpSNDQ0PVu3dv9ezZU5GRkSwdCQDVFAkGAECtd/HiRSUnJyspKcnxOHbsmHx8fNSpUydFRETohx9+0IYNG0r8C72Pj49atGihxYsXKyYmxoIjsE5+fr6GDh2qf//735J+7t1RUhf/Ina7XREREdq0aVONmkugvIwxiomJUXx8/DV7f3h7e0v6eYhAr1699OWXX8rHx6eqwqwQJfVauJq/v79ycnIUFBSkXr16KSYmRvfcc49uu+22UnsXAQCqDxIMAACU4PDhw0pMTHQkHA4cOKDTp0+XWt/b21sFBQUaPXq03nzzTYWGhlZhtNY7c+aMvvzyS61fv17//Oc/dfr0afn6+io3N7dYXS8vL82dO1czZ860INLq5Y033tCsWbNU0texovNXp04d9ezZU0OGDNHQoUM9bjjAiRMnNGnSJK1evbpYr4WSrFixQr/61a8cSRUAgOcgwQAAwHWcP39ewcHB1/1hJP38F3o/Pz+99NJLevzxx2vlX+kLCgqUlJSktWvXauXKlUpNTXX8tb2od4PdbldKSopjXovaaPfu3eratavjr/k2m01eXl4qKChQy5YtNWzYMA0cOFDR0dEeO/wmLi5OkyZN0sWLF687P4f0c2+gt956S1OnTq2C6AAAFY0EAwDAEh9//LHVIbhs9+7d+tOf/lTm191yyy2aMmWKWrRoUQlReY7Tp09r+/btSklJ0Z49exw/NJs2bao5c+bIbrdbHGHVy8vL01NPPaX09HRJP/+wbt++vbp27ao77rhDYWFhFkfonnPnzundd9/V9u3by/Q6Ly8vhYeHa9asWZUUWfXSokULRUREWB0GAFQYEgwAAEswnhpAbRcbG6u4uDirwwCACuNZswMBAGqUFStWaMSIEVaHcV0DBw7UF198IbvdrsuXLzvK/f391axZM918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XLgw/uZv/qbdX0gjIjZs2BDDhw+PpUuXxsKFC2Pr1q3x0ksvxdatW2PEiBFRW1sbEREXX3xxpJSipqYmIiLmzJkTc+bMifXr18eSJUvihRdeaLcM4Kabboq///u/j3/4h3+ILVu2xK9+9as4+eSTo6amJv7zP//zG2foTGPHjo1+/fpFXV1dhx1z4MCBERHR3NwcmzdvjgjXG4AClQCAg9qUKVPSlClTvtF3pk6dmiIiPfroo23G169fn8rLy1N5eXmb8SuvvDJFRFq0aFGb8Q0bNqTy8vI0bNiwNuM1NTUpItITTzzRLmtEpE2bNrWODR48OI0cObJdxiFDhqQXX3xxvzN8U0cddVQqLi7+yjmjR49Offv2TStXrvxax1y9enWKiFRTU7PPObt27UoRkSIiNTQ0pJQK93pHRFqyZMk3/h4AhcEdDABQgJ555pmIiBg/fnyb8SOPPDKGDBnSbv6yZcuiqKgoJk2a1GZ84MCBcdppp8WqVaviww8/bPe94cOHt/k8aNCgiIhoaGhoHZswYUKsXLkyrrnmmqirq2u9TX/t2rVx7rnnZs7QkX7/X/A7yoYNGyIiorS0NA477LCIcL0BKEwKBgAoMI2NjbF9+/bo1q1b9OrVq93+ww8/vN38bdu2RUtLS1RUVLRZ85/L5eLNN9+MiIh333233bEqKirafC4rK4uIiJaWltaxBQsWxMMPPxzvvfdeVFdXR58+fWLChAnx2GOPdUiGg92e516MGDEiSktLXW8ACpaCAQAKTHl5efTu3Ts+++yz2LFjR7v9W7dubTe/srIySkpKoqmpKVJKe93GjBmzX3lyuVzMmjUrnnvuufjkk09i2bJlkVKKyZMnx/33339AMuRLS0tLLFiwICIibrzxxohwvQEoXAoGAChAF1xwQUT8bqnEHps3b461a9e2mz958uRobm6OV199td2+e++9N4455phobm7eryyVlZVRX18fEV8sEzj//PNb347w1FNPHZAM+TJ37tx47bXX4pJLLompU6e2jrveABQiBQMAFKAf/vCHUVVVFXPmzIkVK1bEjh074p133omZM2fuddnE3XffHSeccELMnj07nn766di2bVts3bo1HnjggZg3b17cd999UVJSst95rrvuunj77bejsbExNm7cGPPnz4+UUowdO/aAZfg6sr5FoqWlJTZu3BiPP/54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f8nBM8880zp+2GGHtY7fd999kcvlYufOnfHqq6+2zikpKWmzP5fLxdFHHx2vv/56VFdXR+/evaNHjx4xZsyYePXVVzvt/J1pT766urpoampqHd+0aVPcfPPNcdxxx0VZWVn0798/Jk+eHGvWrGmds2zZsjYPkXz//fdj+vTpUVlZGf369YtJkybFunXr2pyvsbEx7rzzzjj55JOjR48eUVVVFRdeeGEsX748du/e3Wbu18kAAB0iAQCHrCVLlqRv+sf5hg0b0uDBg9OAAQPSE088kbZt25bWrl2bJk+enHK5XHrwwQfbzO/Zs2f67ne/2+44w4YNS/369Ws3vq/5ewwdOjT17NkzjRgxIq1cuTLt2LEjvf766+nb3/52KisrSy+99FKnnn/MmDGpqqoq1dbW7nPO71u9enWKiFRTU7PPOZ9++mmKiBQRqaGhIaWUUkNDQzr22GPTgAED0lNPPZW2b9+efvGLX6TRo0enbt26pZUrV7Y5Rk1NTet59lyXFStWpO7du6fhw4e3mXv11VenioqK9Oyzz6Zdu3aljz76KN12220pItKLL77YOu+bZvhD9uf3GwBdhzsYAKCLmTt3bvz3f/93/OhHP4pJkyZFnz59YsiQIfGzn/0sjjjiiLj55pvj448/7tQMO3fujIULF8aIESOiZ8+eceaZZ8a//du/xeeffx633HJLp567paUlUkod+kDGvR1r7ty58dvf/jbuv//++JM/+ZPo1atXnHbaabF48eJIKcUPfvCDvR7r6quvbr0u5513XkycODFef/312Lx5c+uc559/Pk477bQ4//zzo3v37jFgwID4u7/7uxgyZEiHZACA/aFgAIAu5rHHHouIiIkTJ7YZLy8vj+rq6vj000/jP/7jPzo1Q8+ePeOMM85oM3b66afHkUceGW+99VZs2LCh08790ksvxdatW2PEiBEddsw9eUtLS1uXbSxbtiyKiopi0qRJbeYOHDgwTjvttFi1alV8+OGH7Y41fPjwNp8HDRoUERENDQ2tYxMmTIiVK1fGNddcE3V1da3LItauXRvnnntu67z9zQAA+0PBAABdSGNjY2zbti26desWvXv3brd/wIABERHx0UcfdWqOysrKvY4ffvjhERGxcePGTj1/R3vllVciImLEiBFRWlraep1bWlqioqKizTMWcrlcvPnmmxER8e6777Y7VkVFRZvPZWVlEfHFnRd7LFiwIB5++OF47733orq6Ovr06RMTJkxoLY8iIlMGANgfCgYA6ELKy8ujoqIiPvvss9i+fXu7/XuWRgwcOLB1rKioKD7//PN2cz/55JO9niOXy/3BHFu2bNnrsoI9xcKeoqGzzt+RWlpaYsGCBRERceONN0bEF9e5srIySkpKoqmpqXVJxpe3MWPG7Nc5c7lczJo1K5577rn45JNPYtmyZZFSismTJ8f9999/QDIAwJcpGACgi7nkkksiIuKpp55qM97Y2BjPP/98dO/ePcaPH986fsQRR8T69evbzP3oo4/if/7nf/Z6/B49erQpBL71rW/FT37ykzZzPvvss3j99dfbjP3Xf/1XNDQ0xNChQ+OII47o1PN3pLlz58Zrr70Wl1xySUydOrV1fPLkydHc3NzmzRh73HvvvXHMMcdEc3Pzfp2zsrIy6uvrI+KLZRnnn39+69sofv+N2E1wAAADLklEQVT/a2dmAIAvUzAAQBdz9913x+DBg2POnDnx5JNPxvbt2+PXv/51XH755bFhw4b48Y9/3LpUIiJi3Lhx0dDQEP/4j/8YO3bsiHXr1sUtt9zS5i6D3/ed73wnfv3rX8cHH3wQtbW18d5778WoUaPazKmoqIi/+Iu/iNra2ti5c2e88cYbMXPmzCgrK4sf//jHbeZ29PnHjh0b/fr1i7q6uv26fi0tLbFx48Z4/PHHo7q6OubPnx+zZ8+ORYsWtbl74u67744TTjghZs+eHU8//XRs27Yttm7dGg888EDMmzcv7rvvvkyv0Lzuuuvi7bffjsbGxti4cWPMnz8/UkoxduzYA5YBANo4sC+tAAA60v6+NnDz5s1pzpw5afDgwam0tDRVVFSk8ePHp+eff77d3E8++SRdffXV6Ygjjkjdu3dP55xzTnr99dfTsGHDWl/N+Gd/9met8+vr69OoUaNSz54906BBg9KCBQvaHG/o0KHpqKOOSu+8804aP3586t27d+revXsaPXp0euWVVzr9/KNGjUp9+/b9Wq9o7NmzZ+s59my5XC5VVFSk008/PV1//fVp1apV+/z+li1b0q233pqOP/74VFpamvr375/GjRuXVqxY0Tqntra23TnuuOOOlFJqNz5x4sSUUkpr1qxJ1157bTrllFNSjx49UlVVVTr77LPTgw8+mFpaWr5xhq/LayoB+Cq5lDrwHU0AwAG1dOnSmD59eoe+crGznXHGGbF582ZvLzgEHYq/3wA4cCyRAAAAADJTMAAAAACZKRgAgAPivvvui1wuF2+99VasX78+crlc/OVf/mW+YwEAHcRjgwGAA+K2226L2267Ld8xAIBO4g4GAAAAIDMFAwAAAJCZggEAAADITMEAAAAAZKZgAAAAADJTMAAAAACZKRgAAACAzBQMAAAAQGYKBgAAACAzBQMAAACQmYIBAAAAyEzBAAAAAGSmYAAAAAAyK8l3AAAgu1wul+8IAEAXp2AAgEPYyJEjY8mSJfmOAQAQuZRSyncIAAAA4NDmGQwAAABAZgoGAAAAIDMFAwAAAJBZSUQ8ku8QAAAAwKHt/wGcnVpK2anG7QAAAABJRU5ErkJggg==", + "image/png": "iVBORw0KGgoAAAANSUhEUgAABD8AAAIjCAYAAAAEDbCUAAAABmJLR0QA/wD/AP+gvaeTAAAgAElEQVR4nOzdeXxU1f3/8fckmYQskAWQnQJWwCIGDSBBVoMsig3yACLKpmwuiIi4V0uRaguodQFZbBX69VsCfL9SEUSgYhUSBCKICAEVNwiBACYmhCXL+f3RX+bLMAlkst2Zm9fz8ZjHg5zc3PncO/ecTN7cOcdhjDECAAAAAACwqQCrCwAAAAAAAKhOhB8AAAAAAMDWCD8AAAAAAICtEX4AAAAAAABbC7q4ITU1VS+99JIVtQBAmaZPn674+Phq2TfjHoCqtnLlymrZL+MV4Buq833J8OHDq2W/QG0SHx+v6dOnu7V53Pnx008/adWqVTVWFFBe27Zt07Zt26wuAxZYtWqVfvrpp2rbP+MeqsOqVat0+PBhq8tADTt8+HC1jieMV76D9yW1V3W/L+H3R9Wo7vEYvmvbtm1KTU31aPe486NEdf2PBVBRJSk412bt43A4auR5uLZQlRwOhx5++GGNGDHC6lJQg1asWKGkpKRqfx7GK+vxvqT2qon3Jfz+qLyS8Zg+WvuUdfcUc34AAAAAAABbI/wAAAAAAAC2RvgBAAAAAABsjfADAAAAAADYGuEHAAAAAACwNcIPAAAAAABga4QfAAAAAADA1gg/AAAAAACArRF+AAAAAAAAWyP8AAAAAAAAtkb4AQAAAAAAbI3wAwAAAAAA2BrhBwAAAAAAsDXCj1pg3rx5cjgccjgcat68udXl1KiIiAjXsZc85s2bZ3VZFWKnYwHgyU593E7HAv/g7TW3fPly13Z16tTx2Tp9mZ2OBTXDH/qpna5rOx1LVSH8qAVmzJghY4xiY2OtLqXG5eXladeuXZKkxMREGWM0Y8YMi6uqGDsdCwBPdurjdjoWVL+8vDxdddVVGjx4cKX24c01d8cdd8gYo4SEhAo/Z0XYqW/Y6VhQM/yhn9rpurbTsVQVwg/Ah0RERKhHjx5WlwEAl8V4hapijFFxcbGKi4utLgUXoZ8Dvo0+6p0gqwsAAABA7VW3bl19++23VpcBALA57vwAAAAAAAC2VmXhR3p6uoYMGaLIyEiFhYWpa9euev/999WvXz/XBCsTJkxwbZ+VlaWpU6eqVatWCg4OVsOGDTV06FDt3r3btc3q1avdJmj5/vvvlZSUpKioKNWvX1+DBw92+5+Ci7c/cOCARowYofr167vaTpw4Ue7nl6Rz587p2WefVfv27RUWFqaYmBjddttteu+991RUVFRVp0/Z2dkeE9LMnj1bklRYWOjWPmzYMFd7cnKybr75ZjVu3FihoaHq2LGjXnnllXLdOjp79mzXPi+8XWr9+vWu9gYNGnj8nK+du4rw9tq6eNLYHTt2KCEhQXXr1lVYWJj69u2rrVu3urb39tyW7P/06dPaunWra5ugoIrfnFWe66Mi151Usf57qf7orxj3Kq+yx3u57SUpKirK4zoveQQEBOjw4cM1ftzeYLxivKqMi4/thx9+UFJSkurWrav69etr9OjR+vnnn/X999/rtttuU926ddWkSRNNnDhRubm5Hvs7efKkpk+friuvvFLBwcGKjo7WoEGDtHnzZknev04X13f27Fm35yvvuHU5F47X4eHh6tmzp7Zs2VLBs1r16Of084qqyPt5b37f1eS59eV+Sh+1SR81F0lOTjalNF/S119/baKiokyzZs3Mhg0bTG5urtm7d6/p16+fadiwoQkJCXHbPiMjw/zqV78yjRo1MmvXrnVt37t3b1OnTh2TkpLitn1iYqKRZBITE01KSorJy8szGzduNKGhoaZLly4e9ZRs37t3b7N582Zz+vRps23bNhMYGGiysrK8ev4JEyaYyMhIs2HDBpOfn28yMzPNjBkzjCSzefNmr85TeQwcONAEBASYb775xuN78fHx5r//+79dX69Zs8ZIMs8//7w5deqUycrKMq+++qoJCAgwM2bM8Pj52NhY06xZM4/28PBwc+ONN3q0x8XFmfr167u1WXnuhg0bZoYNG+b1z+3atct1/VzM22srNjbWhIeHm/j4eNf2O3bsMNdee60JDg42H3/8sdv23pzbS21fnmO5mDfXx4ABAy553b3zzjuuryvaf8vqj+UhySQnJ5dr24pg3LN23KvM8ZZn+8jISJObm+vWNmvWLFf/qK7jrsh1y3jl/+NVRcYTb1R0/yXHNnToULNz506Tl5dnli1bZiSZQYMGmcTERLNr1y6Tm5trFi5caCSZhx9+2G0fR48eNa1btzaNGjUya9asMTk5OebAgQNm6NChxuFwmCVLlri29eb9zIX1nTlzxtXm7etX1jVX2ni9Z88e079/f9OqVSuP8bq8eF9Se/t5db8vqcj+vXlt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9v3AwED16dNHmZmZmjt3rk6cOKEzZ85o8+bNWrhwoVfP1b9/f2VkZOj1119XXl6evv32Wz300EOl3mLmD+euukVGRuqpp55SamqqTp8+rZ07d2rUqFEKDg7WK6+84ratN+dWkq6//nodPHhQP/30k1JTU3Xo0CH17NnT6xoren3cf//9Cg0N1e9+9zv169dPv/71rz22sbr/+grGPf/x8MMPa926dVq8ePFl5+6w03FLjFdW9zu7eeGFF9S6dWtNmzZN77//vnJzc3Xw4EHdeeedOnr0qF555RXXx19KXO79zOWerypev9LG63379mnUqFGl3mLvb+jn9HPJ+9e2PL/vavLc2rmf0kd9qI9ePANqRWfFPXDggBkyZIipV6+eCQsLM927dzf//ve/TZ8+fUxYWJjH9idPnjTTp083bdq0MU6n0zRs2ND079/fbNy40bVNamqqkeT2ePrpp435zz03bo9bb7211O3LOpbyPL8xxuzevdtMnjzZXH311SYsLMzExMSYbt26mSVLlpji4mKvz5M3Hn30USPJfPHFF6V+Pysry0yePNm0aNHCOJ1O06hRIzNu3DjzxBNPuI49Li7OzJ07t8zzaIwx2dnZZsKECaZJkyYmNDTU9OjRw+zYscPExcW5tn/88cdd21t17ioyq3p4eLjHsc+dO9fra6tEyYo5+/btMwMGDDB169Y1oaGhpnfv3mbLli0ez+/tuU1PTzc9e/Y04eHhpkWLFmb+/PmXPJayHvv37y/39XGxiRMnljrz/4Uq2n8rMrYY45urvRjDuFcVquJ4L7X9zp07L9tf3n333Wo5bm+vW8Yre4xXvrbaS1nXz44dOzzaX3jhBfPpp596tP/+97937e/EiRNm2rRppnXr1sbpdJrIyEgzYMAA869//avMGi71fubdd9/1eL677rrL9f3yjltl9Z8SF47XJUtSvv/++yYhIcG1/fjx48t9Xo3hfUlt7ufeju81sX9vXltvft9V5bmt6X5akfGYPmqPPlrW+Owwxv3DOytWrFBSUlK554u4nPbt2+vMmTP64YcfqmR/qL2GDx8uSVq5cqVlNXTq1EknTpwo1+zy/uqtt97S/PnztXPnTqtLcXE4HEpOTtaIESOqZf+Me6gO1X3dXg7jlTWqejyp6f2j/HhfUjN8sZ9X9/hu9e8Pu/CF8ZI+ao2yxucq+dhL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FO14O8aaNWvS+PHjU8+ePVOXLl3SiBEj0hNPPJFqa2sLbxX5+te/Xpi/ZcuWdPPNN6dTTjkllZeXp969e6cLL7wwLV26tDBnxYoVhc/u3W677bZCxo9vY8eOTSmltHr16nT11Ven008/PXXt2jX16tUrnX322em+++5LLS0tRZn3JcP+ePzxx1vl2rvdd999+3289rztpVu3bq3OnWVZqqqqSmeccUa69tpr06pVqz7183m8Lu35eQbg6JallFIHdCwAQAllWRb19fUxefLkUkc5qi1atCimTJkSfv06MH6eAdhflr0AAAAAuab8AAAAAHJN+QEAHFWyLPuD2x133FHqmADAQeTR2gDAUcXzNgDg6OPODwAAACDXlB8AAABArik/AAAAgFxTfgAAAAC5pvwAAAAAck35AQAAAOSa8gMAAADINeUHAAAAkGvKDwAAACDXlB8AAABArik/AAAAgFxTfgAAAAC5pvwAAAAAcq2s1AEAgI7x3e9+Nx5++OFSxziqvffeexERMWnSpBInAYCjS5ZSSqUOAQAcWv7Y7hg//elP4/TTT4/evXuXOkru3XzzzVFTU1PqGAAcIZQfAAAHSZZlUV9fH5MnTy51FADgYzzzAwAAAMg15QcAAACQa8oPAAAAINeUHwAAAECuKT8AAACAXFN+AAAAALmm/AAAAAByTfkBAAAA5JryAwAAAMg15QcAAACQa8oPAAAAINeUHwAAAECuKT8AAACAXFN+AAAAALmm/AAAAAByTfkBAAAA5JryAwAAAMg15QcAAACQa8oPAAAAINeUHwAAAECuKT8AAACAXFN+AAAAALmm/AAAAAByTfkBAAAA5JryAwAAAMg15QcAAACQa8oPAAAAINeUHwAAAECuKT8AAACAXFN+AAAAALmm/AAAAAByTfkBAAAA5JryAwAAAMi1LKWUSh0CAOBIc/XVV8eaNWuKxl588cX47Gc/G8cff3xhrHPnzvGjH/0oTjrppI6OCAD8r7JSBwAAOBL16dMnfvCDH7Qa/+Uvf1n09aBBgxQfAFBilr0AALTDV7/61T84p6KiIr72ta8d+jAAwO9l2QsAQDsNHTo03nrrrfh9v06tWbMmBg8e3IGpAIBPcucHAEA7XX755dG5c+c292VZFn/yJ3+i+ACAw4DyAwCgnS699NLYs2dPm/vKyspi+vTpHZwIAGiL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Wo0/88wzsW3btqKx8ePHR58+fToqGgDwCVlKKZU6BADAkWb69OnxwAMPRHl5eWGspaUlsiyLLMsiImLPnj3RrVu32LRpU1RWVpYqKgAc9Sx7AQBoh6lTp0ZERFNTU2Hbs2dPNDc3F77u3LlzTJo0SfEBACWm/AAAaIcvf/nL0atXr987p6mpKS699NIOSgQAfBrlBwBAO5SVlcXUqVOLlr180nHHHRfnnXdex4UCANqk/AAAaKepU6dGU1NTm/sqKirisssui86dO3dwKgDgkzzwFACgnVJKcdJJJ8X69evb3P/SSy/FF77whQ5OBQB8kjs/AADaKcuyuPzyy9tc+jJgwIAYMWJECVIBAJ+k/AAAOABtLX0pLy+Pr33ta4VX3gIApWXZCwDAARoyZEisWbOmaOwXv/hFDB06tESJAICPc+cHAMABuuyyy4qWvnzuc59TfADAYUT5AQBwgKZOnRrNzc0R8bslL9OnTy9xIgDg4yx7AQA4CM4666x49dVXIyLi17/+dXzmM58pcSIAYC93fgAAHASXX355pJTiC1/4guIDAA4z7vwAgKPYokWLYsqUKaWOAW2aOHFiPPzww6WOAUAOlJU6AABQevX19aWOkAtz5syJ6667Lq666qqYOXNm1NTUlDrSEeu73/1uqSMAkCPKDwAgJk+eXOoIufCnf/qncdppp8VVV10VNTU1vq8HwB0fABxMnvkBAHCQnHbaaaWOAAC0QfkBAAAA5JryAwAAAMg15QcAAACQa8oPAAAAINeUHwAAAECuKT8AAACAXFN+AAAAALmm/AAAAAByTfkBAAAA5JryAwAAAMg15QcAAACQa8oPAAAAINeUHwAAJda9e/fIsqxo69SpUxx77LExbNiwuO6662LVqlWljgkARyzlBwBAie3cuTNee+21iIioq6uLlFI0NTVFQ0NDzJ49OxoaGuKss86KK664Inbv3l3itABw5FF+AACHle7du8e555571J5/r86dO0ffvn2jrq4uli1bFrfeemvcf//9MXXq1EgplToeABxRlB8AAEeAO++8M/7sz/4slixZEg899FCp4wDAEUX5AQBwBMiyLG644YaIiFiwYEGJ0wDAkUX5AQDsty1btsTNN98cp556alRUVMSxxx4bF110UTz33HOFOd/+9rcLD+/8+DKSp59+ujB+/PHHF8bnzZsXWZbFrl274sUXXyzMKSsrK9qfZVmcdNJJ8corr0RtbW306NEjunbtGueff368+OKLh+z8h4O9/46VK1dGU1NTYXzTpk1x4403xsCBA6OioiJ69+4dEyZMiNWrVxfmLF68uOiBqu+++25MmTIlqqur47jjjotx48bF2rVri87X2NgYt99+ewwZMiS6du0avXr1iosvvjiWLFkSe/bsKZq7LxkAoFSUHwDAfnn//fdjxIgR8eCDD8Y999wTmzdvjpdeeim6du0atbW18cMf/jAiIr75zW9GSim6detW9PkxY8ZESimGDx9eNH7LLbcU5n/xi1+MlFKklKK5ublo/7Bhw2Lbtm1x0003xbe//e14//3346c//Wls3bo1Ro0aFc8///whOf/hoF+/fhER0dzcHJs3b46IiA0bNsSIESNi0aJFsWDBgti6dWv85Cc/ia1bt0ZNTU2sWLEiIiLGjx8fKaWoq6uLiIiZM2fGzJkzY926dVFfXx/Lli2LqVOnFp3vhhtuiO9973vx/e9/P7Zs2RJvvfVWDBkyJOrq6uJnP/tZYd6+ZgCAUlF+AAD7ZdasWfHrX/86/uEf/iHGjRsXPXv2jMGDB8eDDz4YJ5xwQtx4443xwQcfHNIMu3btigULFkRNTU1069YtzjrrrPjXf/3X+O1vfxs33XTTIT13KbX1oNNZs2bFf/3Xf8Xdd98df/7nfx7du3ePoUOHxkMPPRQppfjGN77R5rGuvPLKwvfvy1/+cowdOzZeeeWVQqkSEfHss8/G0KFD44ILLoguXbpE37594+///u9j8ODBByUDAHQU5QcAsF8effTRiIgYO3Zs0XhlZWXU1tbGhx9+GP/+7/9+SDN069YtzjzzzKKxM844I0488cR4/fXXY8OGDYf0/KWy999VXl5eWLKzePHi6NSpU4wbN65obr9+/WLo0KGxatWqeO+991oda8SIEUVfDxgwICIi1q9fXxgbM2ZMLF++PK666qpYuXJlYanLmjVr4rzzzivMa28GAOgoyg8AYJ81NjbG9u3b45hjjokePXq02t+3b9+I+N3SmEOpurq6zfE+ffpERMTGjRsP6flL5YUXXoiIiJqamigvLy9cj5aWlqiqqip6pkeWZfHqq69GRMTbb7/d6lhVVVVFX1dUVEREREtLS2Fs/vz58cADD8Q777wTtbW10bNnzxgzZkyhAIuIA8oAAB1F+QEA7LPKysqoqqqKjz76KHbs2NFq/97lLnufTRER0alTp/jtb3/bau62bdvaPEeWZX8wx5YtW9pcArK39Nhbghyq85dCS0tLzJ8/PyIirr/++oj43fWorq6OsrKyaGpqKjyn5JPb+eef365zZlkWl112WTzzzDOxbdu2WLx4caSUYsKECXH33Xd3SAYAOBiUHwDAfrnkkksiIuLJJ58sGm9sbIxnn302unTpEqNHjy6Mn3DCCbFu3bqiue+//37893//d5vH79q1a1FZ8dnPfjZ+8IMfFM356KOP4pVXXika+4//+I9Yv359DBs2LE444YRDev5SmDVrVrz88stxySWXxKRJkwrjEyZMiObm5qI33ex11113xcknn9zuh7ZWV1dHQ0NDRPxuqc0FF1xQeGvMx6//ocwAAAeD8gMA2C9z5syJQYMGxcyZM+OJJ56IHTt2xK9+9au49NJLY8OGDXHPPfcUlr9ERFx44YWxfv36+Md//MfYuXNnrF27Nm666aaiuzM+7vOf/3z86le/it/85jexYsWKeOedd2LkyJFFc6qqquJv/uZvYsWKFbFr1674+c9/HtOmTYuKioq45557iuYeivN3hJaWlti4cWM89thjUVtbG3Pnzo0ZM2bEwoULi+5OmTNnTpx66qkxY8aMeOqpp2L79u2xdevWuPfee2P27Nkxb968A3pd7zXXXBNvvPFGNDY2xsaNG2Pu3LmRUopRo0Z1WAYAOGAJADhq1dfXp/b8OrB58+Y0c+bMNGjQoFReXp6qqqrS6NGj07PPPttq7rZt29KVV16ZTjjhhNSlS5d07rnnpldeeSUNHz48RUSKiPTXf/3XhfkNDQ1p5MiRqVu3bmnAgAFp/vz5RccbNmxY6t+/f3rzzTfT6NGjU48ePVKXLl3Sl770pfTCCy8c8vPvi4hI9fX1+zy/W7duhSx7tyzLUlVVVTrjjDPStddem1atWvWpn9+yZUu6+eab0ymnnJLKy8tT796904UXXpiWLl1amLNixYpW57jtttsKeT++jR07NqWU0urVq9PVV1+dTj/99NS1a9fUq1evdPbZZ6f77rsvtbS07HeG/TFx4sQ0ceLEdn0WAD4pS6mNBbMAwFFh0aJFMWXKlDafn3G4OvPMM2Pz5s2H9dtDsiyL+vr6mDx5cqmjHLH2Lu15+OGHS5wEgDyw7AUAAADINeUHAAAAkGvKDwDgiDBv3rzIsixef/31WLduXWRZFt/85jdLHQsAOAJ47DYAcES45ZZb4pZbbil1DADgCOTODwAAACDXlB8AAABArik/AAAAgFxTfgAAAAC5pvwAAAAAck35AQAAAOSa8gMAAADINeUHAAAAkGvKDwAAACDXlB8AAABArik/AAAAgFxTfgAAAAC5pvwAAAAAcq2s1AEAgNLLsqzUEXJnypQpMWXKlFLHOKJNnDix1BEAyIkspZRKHQIAKI333nsvli9fXuoY0KYBAwZETU1NqWMAkAPKDwAAACDXPPMDAAAAyDXlBwAAAJBryg8AAAAg18oi4uFShwAAAAA4VP4/OFNmQWNaqSoAAAAASUVORK5CYII=\n", "text/plain": [ "" ] @@ -591,19 +597,13 @@ "execution_count": 20, "metadata": {}, "outputs": [ - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2021-12-02 01:17:53.113076: I tensorflow/compiler/mlir/mlir_graph_optimization_pass.cc:185] None of the MLIR Optimization Passes are enabled (registered 2)\n" - ] - }, { "name": "stdout", "output_type": "stream", "text": [ - "611/611 [==============================] - 19s 26ms/step - loss: 0.6654\n", - "{'val_loss': 0.6600587}\n" + "609/611 [============================>.] - ETA: 0s - loss: 0.6650{'val_loss': 0.6597499}\n", + "611/611 [==============================] - 17s 22ms/step - loss: 0.6650 - val_loss: 0.6597\n", + "run_time: 19.14878249168396 - rows: 2292 - epochs: 1 - dl_thru: 119.69429393202323\n" ] } ], @@ -628,7 +628,7 @@ "name": "stderr", "output_type": "stream", "text": [ - "2021-12-02 01:18:14.791643: W tensorflow/python/util/util.cc:348] Sets are not currently considered sequences, but this may change in the future, so consider avoiding using them.\n", + "2022-04-27 22:13:04.741886: W tensorflow/python/util/util.cc:368] Sets are not currently considered sequences, but this may change in the future, so consider avoiding using them.\n", "WARNING:absl:Function `_wrapped_model` contains input name(s) movieId, userId with unsupported characters which will be renamed to movieid, userid in the SavedModel.\n" ] }, @@ -643,7 +643,8 @@ "name": "stderr", "output_type": "stream", "text": [ - "INFO:tensorflow:Assets written to: /root/nvt-examples/movielens_tf/1/model.savedmodel/assets\n" + "INFO:tensorflow:Assets written to: /root/nvt-examples/movielens_tf/1/model.savedmodel/assets\n", + "WARNING:absl: has the same name 'DenseFeatures' as a built-in Keras object. Consider renaming to avoid naming conflicts when loading with `tf.keras.models.load_model`. If renaming is not possible, pass the object in the `custom_objects` parameter of the load function.\n" ] } ], @@ -699,12 +700,35 @@ "cell_type": "code", "execution_count": 24, "metadata": {}, - "outputs": [], + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "WARNING:absl:Function `_wrapped_model` contains input name(s) movieId, userId with unsupported characters which will be renamed to movieid, userid in the SavedModel.\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "INFO:tensorflow:Assets written to: /root/nvt-examples/models/movielens_tf/1/model.savedmodel/assets\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "INFO:tensorflow:Assets written to: /root/nvt-examples/models/movielens_tf/1/model.savedmodel/assets\n", + "WARNING:absl: has the same name 'DenseFeatures' as a built-in Keras object. Consider renaming to avoid naming conflicts when loading with `tf.keras.models.load_model`. If renaming is not possible, pass the object in the `custom_objects` parameter of the load function.\n" + ] + } + ], "source": [ "# Creates an ensemble triton server model, where\n", - "# model: The tensorflow model that should be served\n", - "# workflow: The nvtabular workflow used in preprocessing\n", - "# name: The base name of the various triton models\n", + "# model: The tensorflow model that should be served\n", + "# workflow: The nvtabular workflow used in preprocessing\n", + "# name: The base name of the various triton models\n", "\n", "from nvtabular.inference.triton import export_tensorflow_ensemble\n", "export_tensorflow_ensemble(model, workflow, MODEL_NAME_ENSEMBLE, MODEL_PATH, [\"rating\"])"