{"id":34532,"date":"2019-12-12T22:56:09","date_gmt":"2019-12-12T13:56:09","guid":{"rendered":"https:\/\/jirak.net\/wp\/amazon-sagemaker-debugger-%ea%b8%b0%ea%b3%84-%ed%95%99%ec%8a%b5-%eb%aa%a8%eb%8d%b8-%ed%95%99%ec%8a%b5-%ea%b3%bc%ec%a0%95-%eb%94%94%eb%b2%84%ea%b9%85-%ea%b8%b0%eb%8a%a5-%ec%b6%9c%ec%8b%9c\/"},"modified":"2019-12-12T23:34:20","modified_gmt":"2019-12-12T14:34:20","slug":"amazon-sagemaker-debugger-%ea%b8%b0%ea%b3%84-%ed%95%99%ec%8a%b5-%eb%aa%a8%eb%8d%b8-%ed%95%99%ec%8a%b5-%ea%b3%bc%ec%a0%95-%eb%94%94%eb%b2%84%ea%b9%85-%ea%b8%b0%eb%8a%a5-%ec%b6%9c%ec%8b%9c","status":"publish","type":"post","link":"https:\/\/jirak.net\/wp\/amazon-sagemaker-debugger-%ea%b8%b0%ea%b3%84-%ed%95%99%ec%8a%b5-%eb%aa%a8%eb%8d%b8-%ed%95%99%ec%8a%b5-%ea%b3%bc%ec%a0%95-%eb%94%94%eb%b2%84%ea%b9%85-%ea%b8%b0%eb%8a%a5-%ec%b6%9c%ec%8b%9c\/","title":{"rendered":"Amazon SageMaker Debugger \u2013 \uae30\uacc4 \ud559\uc2b5 \ubaa8\ub378 \ud559\uc2b5 \uacfc\uc815 \ub514\ubc84\uae45 \uae30\ub2a5 \ucd9c\uc2dc (\uc11c\uc6b8 \ub9ac\uc804 \ud3ec\ud568)"},"content":{"rendered":"<p>Amazon SageMaker Debugger \u2013 \uae30\uacc4 \ud559\uc2b5 \ubaa8\ub378 \ud559\uc2b5 \uacfc\uc815 \ub514\ubc84\uae45 \uae30\ub2a5 \ucd9c\uc2dc (\uc11c\uc6b8 \ub9ac\uc804 \ud3ec\ud568)<\/p>\n<p><a title=\"\" href=\"https:\/\/aws.amazon.com\/sagemaker\/\">Amazon SageMaker Debugger<\/a>\ub294 \uae30\uacc4 \ud559\uc2b5(ML) \ud6c8\ub828 \uc791\uc5c5 \uc911 \ubc1c\uc0dd\ud558\ub294 \ubcf5\uc7a1\ud55c \ubb38\uc81c\ub97c \uc790\ub3d9\uc73c\ub85c \uc2dd\ubcc4\ud574\uc8fc\ub294 \uae30\ub2a5\uc785\ub2c8\ub2e4.<\/p>\n<p>ML \ubaa8\ub378\uc744 \uad6c\ucd95\ud558\uace0 \ud559\uc2b5\ud558\ub824\uba74 \uacfc\ud559\uacfc \uae30\uc220<em>(\uc694\uc220\uc774\ub77c\uace0 \ub9d0\ud558\ub294 \uc0ac\ub78c\ub3c4 \uc788\uc74c)<\/em>\uc774 \ubaa8\ub450 \ud544\uc694\ud569\ub2c8\ub2e4. \ub370\uc774\ud130 \uc138\ud2b8\ub97c \uc218\uc9d1\ud558\uace0 \uc900\ube44\ud558\ub294 \uac83\ubd80\ud130 \ub2e4\uc591\ud55c \uc54c\uace0\ub9ac\uc998\uc744 \uc2e4\ud5d8\ud558\uc5ec \ucd5c\uc801\uc758 \ud559\uc2b5 \ud30c\ub77c\ubbf8\ud130<em>(\uacf5\ud3ec\uc758 \ud558\uc774\ud37c\ud30c\ub77c\ubbf8\ud130)<\/em>\ub97c \ucc3e\ub294 \uac83\uae4c\uc9c0, ML \uc2e4\ubb34\uc790\uac00 \uace0\uc131\ub2a5 \ubaa8\ub378\uc744 \uc81c\uacf5\ud558\uae30\uae4c\uc9c0 \ub118\uc5b4\uc57c \ud560 \ud5c8\ub4e4\uc740 \uaf64 \ub9ce\uc2b5\ub2c8\ub2e4. \uadf8\ub798\uc11c AWS\ub294 \ubaa8\ub4c8\uc2dd\uc758 \uc644\uc804\uad00\ub9ac\ud615 \uc11c\ube44\uc2a4\uc778 <a title=\"\" href=\"https:\/\/aws.amazon.com\/sagemaker\/\">Amazon SageMaker<\/a>\ub97c \ub9cc\ub4e4\uc5c8\uc2b5\ub2c8\ub2e4. \uc774 \uc11c\ube44\uc2a4\ub294 ML \uc6cc\ud06c\ud50c\ub85c\ub97c \uac04\uc18c\ud654\ud558\uace0 \uac00\uc18d\ud654\ud569\ub2c8\ub2e4.<\/p>\n<p>ML\ub9cc\ud07c \uba38\ud53c\uc758 \ubc95\uce59\uc774 \uc798 \ub4e4\uc5b4\ub9de\ub294 \uac83\ub3c4 \uc5c6\uc2b5\ub2c8\ub2e4. \uc798\ubabb\ub420 \uac00\ub2a5\uc131\uc774 \uc788\ub294 \ubaa8\ub4e0 \uac83\uc774 \uc790\uc8fc \uc798\ubabb\ub418\ub2c8\uae4c\uc694. \ud2b9\ud788, \ud559\uc2b5 \ud504\ub85c\uc138\uc2a4\uc5d0\uc11c \ubc1c\uc0dd\ud558\ub294 \ubd88\ubd84\uba85\ud55c \ub2e4\uc218\uc758 \ubb38\uc81c\ub85c \uc778\ud574 \ubaa8\ub378\uc774 \ub370\uc774\ud130 \uc138\ud2b8\uc5d0 \uc788\ub294 \ud328\ud134\uc744 \uc62c\ubc14\ub974\uac8c \ucd94\ucd9c\ud558\uace0 \ud559\uc2b5\ud558\ub294 \ub370 \ucc28\uc9c8\uc774 \uc0dd\uae41\ub2c8\ub2e4. ML \ub77c\uc774\ube0c\ub7ec\ub7ec\uc758 \uc18c\ud504\ud2b8\uc6e8\uc5b4 \ubc84\uadf8\ub97c \ub9d0\ud558\ub294 \uac8c \uc544\ub2d9\ub2c8\ub2e4. \ubb3c\ub860, \ubc84\uadf8\ub3c4 \ubc1c\uc0dd\ud558\uae30\ub294 \ud569\ub2c8\ub2e4. \uadf8\ub7ec\ub098 \ub300\ubd80\ubd84\uc758 \ud559\uc2b5 \uc791\uc5c5\uc774 \uc2e4\ud328\ud558\ub294 \uc774\uc720\ub294 \ubd80\uc801\uc808\ud55c \ud30c\ub77c\ubbf8\ud130 \ucd08\uae30\ud654, \uacb0\ud568\uc774 \uc788\ub294 \ud558\uc774\ud37c\ud30c\ub77c\ubbf8\ud130\uc758 \uc870\ud569, \uc790\uccb4 \ucf54\ub4dc\uc758 \uc124\uacc4 \ubb38\uc81c \ub4f1\uc5d0 \uc788\uc2b5\ub2c8\ub2e4.<\/p>\n<p>\uac8c\ub2e4\uac00 \uc774\ub7ec\ud55c \ubb38\uc81c\uac00 \uc989\uc2dc \ubc1c\uacac\ub418\ub294 \uacbd\uc6b0\ub294 \uac70\uc758 \uc5c6\uc2b5\ub2c8\ub2e4. \ucc28\ucc28 \ubc1c\uc804\ud558\uba74\uc11c \ub290\ub9ac\uc9c0\ub9cc \ud655\uc2e4\ud55c \ubc29\ubc95\uc73c\ub85c \ud559\uc2b5 \ud504\ub85c\uc138\uc2a4\ub97c \ub9dd\uce58\uace0 \uacb0\uad6d\uc5d0\ub294 \uc815\ud655\ub3c4\uac00 \ub0ae\uc740 \ubaa8\ub378\uc744 \ub9cc\ub4e4\uc5b4 \ub0c5\ub2c8\ub2e4. \ud604\uc2e4\uc801\uc73c\ub85c, <em>\uc9c4\uc9dc<\/em> \uace0\uc218\uac00 \uc628\ub2e4\uace0 \ud574\ub3c4 \ubb38\uc81c\ub97c \uc2dd\ubcc4\ud558\uace0 \ucd94\uc801\ud558\uae30\uac00 \uadf9\ud788 \uc5b4\ub835\uace0 \ub9ce\uc740 \uc2dc\uac04\uc774 \uc18c\ubaa8\ub429\ub2c8\ub2e4. <a title=\"\" href=\"https:\/\/aws.amazon.com\/sagemaker\/\">Amazon SageMaker Debugger<\/a>\ub294 \uc774\ub7ec\ud55c \uc774\uc720\ub85c \ub9cc\ub4e4\uc5b4\uc84c\uc2b5\ub2c8\ub2e4.<\/p>\n<p>\uc880 \ub354 \uc790\uc138\ud788 \uc54c\uc544\ubd05\uc2dc\ub2e4.<\/p>\n<p><strong><span style=\"text-decoration: underline\">Amazon SageMaker Debugger\uc18c\uac1c<br \/> <\/span><\/strong>TensorFlow, Keras, Apache MXNet, PyTorch \ubc0f XGBoost\uc758 \uae30\uc874 \ud559\uc2b5 \ucf54\ub4dc\uc5d0\uc11c \uc0c8\ub85c\uc6b4 SageMaker Debugger SDK\ub97c \uc0ac\uc6a9\ud558\uc5ec \ub0b4\ubd80 \ubaa8\ub378 \uc0c1\ud0dc\ub97c \uc8fc\uae30\uc801\uc778 \uac04\uaca9\uc73c\ub85c \uc800\uc7a5\ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4.<\/p>\n<p>\uac1c\ubcc4 \ubaa8\ub378 \uc0c1\ud0dc\ub294 \uc608\uc0c1\ud558\uc2e0 \ub300\ub85c <a title=\"\" href=\"https:\/\/aws.amazon.com\/s3\/\">Amazon Simple Storage Service(S3)<\/a>\uc5d0 \uc800\uc7a5\ub429\ub2c8\ub2e4. \uc774 \uc0c1\ud0dc\ub294 \ub2e4\uc74c\uc73c\ub85c \uad6c\uc131\ub429\ub2c8\ub2e4.<\/p>\n<ul>\n<li>\ubaa8\ub378\uc774 \ud559\uc2b5\ud558\ub294 \ud30c\ub77c\ubbf8\ud130(\uc608: \uc2e0\uacbd\ub9dd\uc5d0 \ub300\ud55c \uac00\uc911\uce58 \ubc0f \ud3b8\ucc28)<\/li>\n<li>\ucd5c\uc801\ud654 \ud504\ub85c\uadf8\ub7a8\uc744 \ud1b5\ud574 \uc774\ub7ec\ud55c \ud30c\ub77c\ubbf8\ud130\uc5d0 \uc801\uc6a9\ub418\ub294 \ubcc0\uacbd(\uae30\uc6b8\uae30)<\/li>\n<li>\ucd5c\uc801\ud654 \ud30c\ub77c\ubbf8\ud130 \uc790\uccb4<\/li>\n<li>\uc2a4\uce7c\ub77c \uac12(\uc608: \uc815\ud655\ub3c4 \ubc0f \uc190\uc2e4)<\/li>\n<li>\uac01 \uacc4\uce35\uc758 \ucd9c\ub825<\/li>\n<li>\uae30\ud0c0 \ub4f1\ub4f1\u2026<\/li>\n<\/ul>\n<p>\ud2b9\uc815 \uac12 \uc138\ud2b8(\uc608: \uc2dc\uac04\ub300\ubcc4\ub85c \ud2b9\uc815 \uc2e0\uacbd\ub9dd \uacc4\uce35\uc744 \ud1b5\ud574 \ud750\ub974\ub294 \uae30\uc6b8\uae30\uc758 \uc2dc\ud000\uc2a4)\ub294 \uac1c\ubcc4\uc801\uc73c\ub85c \uc800\uc7a5\ub418\uba70 \uc774\ub97c \ud150\uc11c\ub77c\uace0 \ud569\ub2c8\ub2e4. \ud150\uc11c\ub294 \uceec\ub809\uc158(\uac00\uc911\uce58, \uae30\uc6b8\uae30 \ub4f1)\uc73c\ub85c \uad6c\uc131\ub418\ub294\ub370 \ud559\uc2b5 \uc911\uc5d0 \uc800\uc7a5\ud560 \ud56d\ubaa9\uc744 \uacb0\uc815\ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4. \uadf8\ub7f0 \ub2e4\uc74c SageMaker SDK\uc640 \uc608\uce21\uae30\ub97c \uc0ac\uc6a9\ud558\uc5ec SageMaker Debugger\uc5d0\uc11c \uc801\uc6a9\ud560 \uaddc\uce59\uc744 \uc815\uc758\ud558\ub294 \ucd94\uac00 \ud30c\ub77c\ubbf8\ud130\ub97c \uc804\ub2ec\ud558\uba74\uc11c \ud559\uc2b5 \uc791\uc5c5\uc744 \uad6c\uc131\ud569\ub2c8\ub2e4.<\/p>\n<p>\uac01 \uaddc\uce59\uc740 \ud559\uc2b5 \uc911\uc778 \ubaa8\ub378\uc758 \ud150\uc11c\ub97c \ubd84\uc11d\ud558\uc5ec \ubc14\ub78c\uc9c1\ud558\uc9c0 \uc54a\uc740 \uc870\uac74\uc744 \ucc3e\ub294 Python \ucf54\ub4dc \uc870\uac01\uc785\ub2c8\ub2e4. \ud150\uc11c \uae09\uc99d\/\uc18c\uba78(\ud30c\ub77c\ubbf8\ud130\uac00 NaN \ub610\ub294 0 \uac12\uc5d0 \ub3c4\ub2ec), \uae30\uc6b8\uae30 \uae09\uc99d\/\uc18c\uba78, \ubcc0\uacbd \uc5c6\ub294 \uc190\uc2e4 \ub4f1\uc758 \uc77c\ubc18\uc801\uc778 \ubb38\uc81c\uc5d0 \ub300\ud574 \ubbf8\ub9ac \uc815\uc758\ub41c \uaddc\uce59\uc744 \uc0ac\uc6a9\ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4. \ubb3c\ub860, \uc9c1\uc811 \uaddc\uce59\uc744 \uc4f0\uc154\ub3c4 \ub429\ub2c8\ub2e4.<\/p>\n<p>Amazon SageMaker \uc608\uce21\uae30\uac00 \uad6c\uc131\ub418\uba74 \ud559\uc2b5 \uc791\uc5c5\uc744 \uc2dc\uc791\ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4. \uc989\uc2dc, \uad6c\uc131\ud55c \uac01 \uaddc\uce59\uc5d0\uc11c \ub514\ubc84\uae45 \uc791\uc5c5\uc774 \ubc1c\ud6a8\ub418\uace0 \uc0ac\uc6a9 \uac00\ub2a5\ud55c \ud150\uc11c\ub97c \uac80\uc0ac\ud558\uae30 \uc2dc\uc791\ud569\ub2c8\ub2e4. \ub514\ubc84\uae45 \uc791\uc5c5\uc5d0\uc11c \ubb38\uc81c\uac00 \ubc1c\uacac\ub418\uba74 \uc791\uc5c5\uc774 \uc911\uc9c0\ub418\uace0 \ucd94\uac00 \uc815\ubcf4\uac00 \uae30\ub85d\ub429\ub2c8\ub2e4. \ucd94\uac00 \uc790\ub3d9\ud654 \ub2e8\uacc4\ub97c \ud2b8\ub9ac\uac70\ud558\ub824\ub294 \uacbd\uc6b0 <a title=\"\" href=\"https:\/\/aws.amazon.com\/ko\/blogs\/korea\/new-cloudwatch-events-track-and-respond-to-changes-to-your-aws-resources\/\">CloudWatch Events<\/a> \uc774\ubca4\ud2b8\ub3c4 \uc804\uc1a1\ub429\ub2c8\ub2e4.<\/p>\n<p>\uc774\uc81c, \uae30\uc6b8\uae30 \uc18c\uba78\ub85c \uc778\ud574 \ub525 \ub7ec\ub2dd \uc791\uc5c5\uc5d0\uc11c \ubb38\uc81c\uac00 \ubc1c\uc0dd\ud569\ub2c8\ub2e4. \uc7a0\uae50\uc758 \uc219\uace0\uc640 \uacbd\ud5d8\uc744 \ubc14\ud0d5\uc73c\ub85c \ubb38\uc81c \uc601\uc5ed\uc744 \ucc3e\uac8c \ub429\ub2c8\ub2e4. \uc2e0\uacbd\ub9dd\uc774 \ub108\ubb34 \uae4a\uc740 \uac83\uc774 \ubb38\uc81c\uc77c\uae4c? \ud559\uc2b5 \uc18d\ub3c4\uac00 \ub108\ubb34 \ub290\ub9b0\uac00? \ub0b4\ubd80 \uc0c1\ud0dc\uac00 <a title=\"\" href=\"https:\/\/aws.amazon.com\/s3\/\">S3<\/a>\uc5d0 \uc800\uc7a5\ub418\uc5c8\uc73c\ubbc0\ub85c \uc774\uc81c SageMaker Debugger SDK\ub97c \uc0ac\uc6a9\ud558\uc5ec \ud150\uc11c\uc758 \uc2dc\uac04\ub300\ubcc4 \ubcc0\ud654\ub97c \ud0d0\uc0c9\ud558\uace0 \uac00\uc124\uc744 \ud655\uc778\ud55c \ub2e4\uc74c \uadfc\ubcf8 \uc6d0\uc778\uc744 \ud574\uacb0\ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4.<\/p>\n<p>SageMaker Debugger\uc758 \uc791\ub3d9 \ubc29\uc2dd\uc744 \ube60\ub978 \ub370\ubaa8\ub85c \uc0b4\ud3b4\ubd05\uc2dc\ub2e4.<\/p>\n<p><span style=\"text-decoration: underline\"><strong>Amazon SageMaker Debugger \uae30\ubc18 \ubaa8\ub378 \ub514\ubc84\uae45<br \/> <\/strong><\/span>SageMaker Debugger\uc758 \ud575\uc2ec\uc740 \ud559\uc2b5 \uc911\uc5d0 \ud150\uc11c\ub97c \ucea1\ucc98\ud558\ub294 \uae30\ub2a5\uc785\ub2c8\ub2e4. \uc774 \uae30\ub2a5\uc744 \uc0ac\uc6a9\ud558\ub824\uba74 \ud559\uc2b5 \ucf54\ub4dc\ub97c \uc57d\uac04 \uc870\uc815\ud558\uc5ec \uc800\uc7a5\ud560 \ud150\uc11c \uceec\ub809\uc158\uc744 \uacb0\uc815\ud558\uace0 \uc800\uc7a5 \ube48\ub3c4\ub97c \uc120\ud0dd\ud558\uace0 \uac12 \uc790\uccb4\ub97c \uc800\uc7a5\ud560\uc9c0 \uac10\uc18c \uac12(\uc911\uac04 \uac12, \ud3c9\uade0 \ub4f1)\uc744 \uc800\uc7a5\ud560\uc9c0 \uc5ec\ubd80\ub97c \uc120\ud0dd\ud574\uc57c \ud569\ub2c8\ub2e4.<\/p>\n<p>SageMaker Debugger SDK\ub294 \uc9c0\uc6d0\ud558\ub294 \uac01 \ud504\ub808\uc784\uc6cc\ud06c\ub97c \uc704\ud55c \ub2e8\uc21c\ud55c API\ub97c \uc81c\uacf5\ud569\ub2c8\ub2e4. \uc774 API\ub97c \uc0ac\uc6a9\ud558\uc5ec \uc774 \uc791\uc5c5\uc744 \uc218\ud589\ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4. 2\ucc28\uc6d0 \uc120\ud615 \ud68c\uadc0 \ubaa8\ub378\uc744 \ucc3e\ub294 \ub2e8\uc21c\ud55c TensorFlow \uc2a4\ud06c\ub9bd\ud2b8\ub97c \uc0ac\uc6a9\ud558\uc5ec \uc791\ub3d9 \ubc29\uc2dd\uc744 \uc54c\uc544\ubd05\uc2dc\ub2e4. \ubb3c\ub860, \uc774 Github <a href=\"https:\/\/github.com\/awslabs\/amazon-sagemaker-examples\">\ub9ac\ud3ec\uc9c0\ud1a0\ub9ac<\/a>\uc5d0\uc11c \ub354 \ub9ce\uc740 \uc608\uc81c\ub97c \ucc3e\uc744 \uc218 \uc788\uc2b5\ub2c8\ub2e4.<\/p>\n<p>\ucd08\uae30 \ucf54\ub4dc\ub97c \uc0b4\ud3b4\ubd05\uc2dc\ub2e4.<\/p>\n<pre><code class=\"lang-python\">import argparse\nimport numpy as np\nimport tensorflow as tf\nimport random\n\nparser = argparse.ArgumentParser()\nparser.add_argument('--model_dir', type=str, help=&quot;S3 path for the model&quot;)\nparser.add_argument('--lr', type=float, help=&quot;Learning Rate&quot;, default=0.001)\nparser.add_argument('--steps', type=int, help=&quot;Number of steps to run&quot;, default=100)\nparser.add_argument('--scale', type=float, help=&quot;Scaling factor for inputs&quot;, default=1.0)\n\nargs = parser.parse_args()\n\nwith tf.name_scope('initialize'):\n    # 2-dimensional input sample\n    x = tf.placeholder(shape=(None, 2), dtype=tf.float32)\n    # Initial weights: [10, 10]\n    w = tf.Variable(initial_value=[[10.], [10.]], name='weight1')\n    # True weights, i.e. the ones we're trying to learn\n    w0 = [[1], [1.]]\nwith tf.name_scope('multiply'):\n    # Compute true label\n    y = tf.matmul(x, w0)\n    # Compute &quot;predicted&quot; label\n    y_hat = tf.matmul(x, w)\nwith tf.name_scope('loss'):\n    # Compute loss\n    loss = tf.reduce_mean((y_hat - y) ** 2, name=&quot;loss&quot;)\n\noptimizer = tf.train.AdamOptimizer(args.lr)\noptimizer_op = optimizer.minimize(loss)\n\nwith tf.Session() as sess:\n    sess.run(tf.global_variables_initializer())\n    for i in range(args.steps):\n        x_ = np.random.random((10, 2)) * args.scale\n        _loss, opt = sess.run([loss, optimizer_op], {x: x_})\n        print (f'Step={i}, Loss={_loss}')\n<\/code><\/pre>\n<p>TensorFlow <code><a href=\"https:\/\/sagemaker.readthedocs.io\/en\/stable\/using_tf.html\">Estimator<\/a><\/code>\ub97c \uc0ac\uc6a9\ud558\uc5ec \uc774 \uc2a4\ud06c\ub9bd\ud2b8\ub97c \ud559\uc2b5\ud569\uc2dc\ub2e4. SageMaker <a href=\"https:\/\/aws.amazon.com\/blogs\/machine-learning\/use-the-amazon-sagemaker-local-mode-to-train-on-your-notebook-instance\/\">\ub85c\uceec \ubaa8\ub4dc<\/a>\ub97c \uc0ac\uc6a9\ud558\ub294\ub370 \uc774 \ubaa8\ub4dc\ub294 \uc2e4\ud5d8\uc801 \ucf54\ub4dc\ub97c \ube60\ub974\uac8c \ubc18\ubcf5\ud558\uae30\uc5d0 \uc544\uc8fc \uc88b\uc2b5\ub2c8\ub2e4.<\/p>\n<pre><code class=\"lang-python\">bad_hyperparameters = {'steps': 10, 'lr': 100, 'scale': 100000000000}\n\nestimator = TensorFlow(\n    role=sagemaker.get_execution_role(),\n    base_job_name='debugger-simple-demo',\n    train_instance_count=1,\n    train_instance_type='local',\n    entry_point='script-v1.py',\n    framework_version='1.13.1',\n    py_version='py3',\n    script_mode=True,\n    hyperparameters=bad_hyperparameters)<\/code><\/pre>\n<p>\ud559\uc2b5 \ub85c\uadf8\ub97c \ubcf4\uba74 \uacb0\uacfc\uac00 \uc88b\uc9c0 \uc54a\uc2b5\ub2c8\ub2e4.<\/p>\n<p><code>Step=0, Loss=7.883463958023267e+23<\/code><br \/> <code>algo-1-hrvqg_1 | Step=1, Loss=9.502028841062608e+23<\/code><br \/> <code>algo-1-hrvqg_1 | Step=2, Loss=nan<\/code><br \/> <code>algo-1-hrvqg_1 | Step=3, Loss=nan<\/code><br \/> <code>algo-1-hrvqg_1 | Step=4, Loss=nan<\/code><br \/> <code>algo-1-hrvqg_1 | Step=5, Loss=nan<\/code><br \/> <code>algo-1-hrvqg_1 | Step=6, Loss=nan<\/code><br \/> <code>algo-1-hrvqg_1 | Step=7, Loss=nan<\/code><br \/> <code>algo-1-hrvqg_1 | Step=8, Loss=nan<\/code><br \/> <code>algo-1-hrvqg_1 | Step=9, Loss=nan<\/code><\/p>\n<p>\uc190\uc2e4\uc774 \uc804\ud600 \uc904\uc5b4\ub4e4\uc9c0 \uc54a\uc2b5\ub2c8\ub2e4. \uc2ec\uc9c0\uc5b4 \ubb34\ud55c\ub300\ub85c \uc62c\ub77c\uac11\ub2c8\ub2e4. \ud150\uc11c \ubb38\uc81c\uac00 \uae09\uc99d\ud558\ub294 \uac83 \uac19\uc740\ub370 \uc774 \uae09\uc99d\uc740 SageMaker Debugger\uc5d0 \uae30\ubcf8\uc801\uc73c\ub85c \uc815\uc758\ub41c \uaddc\uce59 \uc911 \ud558\ub098\uc785\ub2c8\ub2e4. \uc774\uc81c \uc791\uc5c5\uc744 \uc2dc\uc791\ud569\ub2c8\ub2e4.<\/p>\n<p><strong><span style=\"text-decoration: underline\">Amazon SageMaker Debugger SDK \uc0ac\uc6a9<br \/> <\/span><\/strong>\ud150\uc11c\ub97c \ucea1\ucc98\ud558\ub824\uba74 \ub2e4\uc74c\uc744 \uc0ac\uc6a9\ud558\uc5ec \ud559\uc2b5 \uc2a4\ud06c\ub9bd\ud2b8\ub97c \uad6c\uc131\ud574\uc57c \ud569\ub2c8\ub2e4.<\/p>\n<ul>\n<li>\ud150\uc11c\ub97c \uc800\uc7a5\ud560 \ube48\ub3c4\ub97c \uc9c0\uc815\ud558\ub294 <code>SaveConfig<\/code> \uac1d\uccb4<\/li>\n<li>TensorFlow \uc138\uc158\uc5d0 \uc5f0\uacb0\ub418\uc5b4 \ud559\uc2b5 \uc911\uc5d0 \ubaa8\ub4e0 \uac83\uc744 \uacb0\ud569\ud558\uace0 \ud544\uc694\ud55c \ud150\uc11c\ub9cc \uc800\uc7a5\ud558\ub294 <code>SessionHook<\/code> \uac1d\uccb4<\/li>\n<li>(\uc120\ud0dd \uc0ac\ud56d) \uc804\uccb4 \ud150\uc11c \ub300\uc2e0 \uc800\uc7a5\ud560 \ud150\uc11c \uac10\uc18c\ub97c \ub098\uc5f4\ud558\ub294 <code>ReductionConfig<\/code> \uac1d\uccb4<\/li>\n<li>(\uc120\ud0dd \uc0ac\ud56d) \uae30\uc6b8\uae30\ub97c \ucea1\ucc98\ud558\ub294 \ucd5c\uc801\ud654 \ud504\ub85c\uadf8\ub7a8 \ub798\ud37c<\/li>\n<\/ul>\n<p>\uc5c5\ub370\uc774\ud2b8\ub41c \ucf54\ub4dc\ub294 \ub2e4\uc74c\uacfc \uac19\uc2b5\ub2c8\ub2e4. SageMaker Debugg er\ud30c\ub77c\ubbf8\ud130\uc5d0 \ub300\ud55c \uba85\ub839\uc904 \uc778\uc218\uac00 \ucd94\uac00\ub418\uc5c8\uc2b5\ub2c8\ub2e4.<\/p>\n<pre><code class=\"lang-python\">import argparse\nimport numpy as np\nimport tensorflow as tf\nimport random\nimport smdebug.tensorflow as smd\n\nparser = argparse.ArgumentParser()\nparser.add_argument('--model_dir', type=str, help=&quot;S3 path for the model&quot;)\nparser.add_argument('--lr', type=float, help=&quot;Learning Rate&quot;, default=0.001 )\nparser.add_argument('--steps', type=int, help=&quot;Number of steps to run&quot;, default=100 )\nparser.add_argument('--scale', type=float, help=&quot;Scaling factor for inputs&quot;, default=1.0 )\nparser.add_argument('--debug_path', type=str, default='\/opt\/ml\/output\/tensors')\nparser.add_argument('--debug_frequency', type=int, help=&quot;How often to save tensor data&quot;, default=10)\nfeature_parser = parser.add_mutually_exclusive_group(required=False)\nfeature_parser.add_argument('--reductions', dest='reductions', action='store_true', help=&quot;save reductions of tensors instead of saving full tensors&quot;)\nfeature_parser.add_argument('--no_reductions', dest='reductions', action='store_false', help=&quot;save full tensors&quot;)\nargs = parser.parse_args()\nargs = parser.parse_args()\n\nreduc = smd.ReductionConfig(reductions=['mean'], abs_reductions=['max'], norms=['l1']) if args.reductions else None\n\nhook = smd.SessionHook(out_dir=args.debug_path,\n                       include_collections=['weights', 'gradients', 'losses'],\n                       save_config=smd.SaveConfig(save_interval=args.debug_frequency),\n                       reduction_config=reduc)\n\nwith tf.name_scope('initialize'):\n    # 2-dimensional input sample\n    x = tf.placeholder(shape=(None, 2), dtype=tf.float32)\n    # Initial weights: [10, 10]\n    w = tf.Variable(initial_value=[[10.], [10.]], name='weight1')\n    # True weights, i.e. the ones we're trying to learn\n    w0 = [[1], [1.]]\nwith tf.name_scope('multiply'):\n    # Compute true label\n    y = tf.matmul(x, w0)\n    # Compute &quot;predicted&quot; label\n    y_hat = tf.matmul(x, w)\nwith tf.name_scope('loss'):\n    # Compute loss\n    loss = tf.reduce_mean((y_hat - y) ** 2, name=&quot;loss&quot;)\n    hook.add_to_collection('losses', loss)\n\noptimizer = tf.train.AdamOptimizer(args.lr)\noptimizer = hook.wrap_optimizer(optimizer)\noptimizer_op = optimizer.minimize(loss)\n\nhook.set_mode(smd.modes.TRAIN)\n\nwith tf.train.MonitoredSession(hooks=[hook]) as sess:\n    for i in range(args.steps):\n        x_ = np.random.random((10, 2)) * args.scale\n        _loss, opt = sess.run([loss, optimizer_op], {x: x_})\n        print (f'Step={i}, Loss={_loss}')\n<\/code><\/pre>\n<p>TensorFlow <code>Estimator<\/code>\ub3c4 \uc218\uc815\ud574\uc57c \ud569\ub2c8\ub2e4. SageMaker Debugger\uac00 \ud65c\uc131\ud654\ub41c \ud559\uc2b5 \ucee8\ud14c\uc774\ub108\ub97c \uc0ac\uc6a9\ud558\uace0 \ucd94\uac00 \ud30c\ub77c\ubbf8\ud130\ub97c \uc804\ub2ec\ud558\ub3c4\ub85d \uc218\uc815\ud569\ub2c8\ub2e4.<\/p>\n<pre><code class=\"lang-python\">bad_hyperparameters = {'steps': 10, 'lr': 100, 'scale': 100000000000, 'debug_frequency': 1}\n\nfrom sagemaker.debugger import Rule, rule_configs\nestimator = TensorFlow(\n    role=sagemaker.get_execution_role(),\n    base_job_name='debugger-simple-demo',\n    train_instance_count=1,\n    train_instance_type='ml.c5.2xlarge',\n    image_name=cpu_docker_image_name,\n    entry_point='script-v2.py',\n    framework_version='1.15',\n    py_version='py3',\n    script_mode=True,\n    hyperparameters=bad_hyperparameters,\n    rules = [Rule.sagemaker(rule_configs.exploding_tensor())]\n)\n\nestimator.fit()\n2019-11-27 10:42:02 Starting - Starting the training job...\n2019-11-27 10:42:25 Starting - Launching requested ML instances\n********* Debugger Rule Status *********\n*\n* ExplodingTensor: InProgress \n*\n****************************************<\/code><\/pre>\n<p>2\uac00\uc9c0 \uc791\uc5c5\uc774 \uc2e4\ud589\ub418\uace0 \uc788\uc2b5\ub2c8\ub2e4. \uc2e4\uc81c \ud559\uc2b5 \uc791\uc5c5\uacfc <code>Estimator<\/code>\uc5d0 \uc815\uc758\ub41c \uaddc\uce59\uc744 \ud655\uc778\ud558\ub294 \ub514\ubc84\uae45 \uc791\uc5c5\uc785\ub2c8\ub2e4. \uc21c\uc2dd\uac04\uc5d0 \ub514\ubc84\uae45 \uc791\uc5c5\uc774 \uc2e4\ud328\ud569\ub2c8\ub2e4!<\/p>\n<p>\ud559\uc2b5 \uc791\uc5c5\uc744 \uae30\uc220\ud558\uba74 \ub354 \uc790\uc138\ud55c \uc815\ubcf4\ub97c \uc5bb\uc744 \uc218 \uc788\uc2b5\ub2c8\ub2e4.<\/p>\n<pre><code class=\"lang-python\">description = client.describe_training_job(TrainingJobName=job_name)\nprint(description['DebugRuleEvaluationStatuses'][0]['RuleConfigurationName'])\nprint(description['DebugRuleEvaluationStatuses'][0]['RuleEvaluationStatus'])\n\nExplodingTensor\nIssuesFound\n<\/code><\/pre>\n<p>\uc800\uc7a5\ub41c \ud150\uc11c\ub97c \uc0b4\ud3b4\ubd05\uc2dc\ub2e4.<\/p>\n<p><span style=\"text-decoration: underline\"><strong>\ud150\uc11c \uae09\uc99d<br \/> <\/strong><\/span>\ud559\uc2b5 \ud504\ub85c\uc138\uc2a4 \uc911\uc5d0 <a title=\"\" href=\"https:\/\/aws.amazon.com\/s3\/\">S3<\/a>\uc5d0 \uc800\uc7a5\ub41c \ud150\uc11c\ub97c \uac04\ub2e8\ud788 \uac00\uc838\uc62c \uc218 \uc788\uc2b5\ub2c8\ub2e4.<span style=\"text-decoration: underline\"><strong><br \/> <\/strong><\/span><\/p>\n<pre><code class=\"lang-python\">s3_output_path = description[&quot;DebugConfig&quot;][&quot;DebugHookConfig&quot;][&quot;S3OutputPath&quot;]\ntrial = create_trial(s3_output_path)\n<\/code><\/pre>\n<p>\uc0ac\uc6a9 \uac00\ub2a5\ud55c \ud150\uc11c\ub97c \ub098\uc5f4\ud569\ub2c8\ub2e4.<\/p>\n<p><code class=\"lang-python\">trial.tensors()<\/code><\/p>\n<p><code class=\"lang-python\">['loss\/loss:0',<br \/> 'gradients\/multiply\/MatMul_1_grad\/tuple\/control_dependency_1:0',<br \/> 'initialize\/weight1:0']<\/code><\/p>\n<p>\ubaa8\ub4e0 \uac12\uc774 <a href=\"https:\/\/numpy.org\">numpy<\/a> \uc5b4\ub808\uc774\uc774\ubbc0\ub85c \uc27d\uac8c \ubc18\ubcf5\ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4.<\/p>\n<pre><code class=\"lang-python\">tensor = 'gradients\/multiply\/MatMul_1_grad\/tuple\/control_dependency_1:0'\nfor s in list(trial.tensor(tensor).steps()):\n    print(&quot;Value: &quot;, trial.tensor(tensor).step(s).value)\n\nValue:  [[1.1508383e+23] [1.0809098e+23]]\nValue:  [[1.0278440e+23] [1.1347468e+23]]\nValue:  [[nan] [nan]]\nValue:  [[nan] [nan]]\nValue:  [[nan] [nan]]\nValue:  [[nan] [nan]]\nValue:  [[nan] [nan]]\nValue:  [[nan] [nan]]\nValue:  [[nan] [nan]]\nValue:  [[nan] [nan]]<\/code><\/pre>\n<p>\ud150\uc11c \uc774\ub984\uc5d0\ub294 \ud559\uc2b5 \ucf54\ub4dc\uc5d0 \uc815\uc758\ub41c TensorFlow \ubc94\uc704\uac00 \ud3ec\ud568\ub418\ubbc0\ub85c \ud589\ub82c \uacf1\uc148\uc5d0 \ubb38\uc81c\uac00 \uc788\ub2e4\ub294 \uac83\uc744 \uc27d\uac8c \uc54c \uc218 \uc788\uc2b5\ub2c8\ub2e4.<\/p>\n<pre><code class=\"lang-python\"># Compute true label\ny = tf.matmul(x, w0)\n# Compute &quot;predicted&quot; label\ny_hat = tf.matmul(x, w)<\/code><\/pre>\n<p>\uc880 \ub354 \uc790\uc138\ud788 \ubcf4\uba74 \uc870\uc815 \ud30c\ub77c\ubbf8\ud130\uc5d0 \uc758\ud574 <code>x<\/code> \uc785\ub825\uc774 \uc218\uc815\ub418\uc5b4 \uc608\uce21\uae30\uc5d0\uc11c <code>100000000000<\/code>\uc73c\ub85c \uc124\uc815\ub41c \uac83\uc744 \uc54c \uc218 \uc788\uc2b5\ub2c8\ub2e4. \ud559\uc2b5 \uc18d\ub3c4 \ub610\ud55c \uc815\uc0c1\uc774 \uc544\ub2cc \uac83\uc73c\ub85c \ubcf4\uc785\ub2c8\ub2e4. \ucc3e\uc558\uc2b5\ub2c8\ub2e4!<\/p>\n<pre><code class=\"lang-python\">x_ = np.random.random((10, 2)) * args.scale\n\nbad_hyperparameters = {'steps': 10, 'lr': 100, 'scale': 100000000000, 'debug_frequency': 1}<\/code><\/pre>\n<p>\uc774\ubbf8 \uc544\uc168\uaca0\uc9c0\ub9cc \uc774\ub7ec\ud55c \ud558\uc774\ud37c\ud30c\ub77c\ubbf8\ud130\ub97c \uc880 \ub354 \ud569\ub9ac\uc801\uc778 \uac12\uc73c\ub85c \uc124\uc815\ud558\uba74 \ud559\uc2b5 \ubb38\uc81c\uac00 \ud574\uacb0\ub429\ub2c8\ub2e4.<\/p>\n<p><strong><span style=\"text-decoration: underline\">\uc9c0\uae08 \uc774\uc6a9 \uac00\ub2a5!<\/span><\/strong><br \/> Amazon SageMaker Debugger\ub294 \ud559\uc2b5 \ubb38\uc81c\ub97c \ub354 \ube60\ub974\uac8c \ucc3e\uace0 \ud574\uacb0\ud558\ub294 \ub370 \ub3c4\uc6c0\uc774 \ub429\ub2c8\ub2e4. \uc9c0\uae08 \ubc14\ub85c \ubc84\uadf8 \uc0ac\ub0e5\uc744 \uc2dc\uc791\ud558\uc2ed\uc2dc\uc624.<\/p>\n<p>\uc624\ub298\ubd80\ud130 <a title=\"\" href=\"https:\/\/aws.amazon.com\/sagemaker\/\">Amazon SageMaker<\/a>\uac00 \uc81c\uacf5\ub418\ub294 \ubaa8\ub4e0 \uc0c1\uc6a9 \ub9ac\uc804\uc5d0\uc11c SageMaker Debugger\ub97c \uc0ac\uc6a9\ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4. \uc774 \uae30\ub2a5\uc744 \uc0ac\uc6a9\ud558\uace0 Amazon SageMaker\uc5d0 \ub300\ud55c <a href=\"https:\/\/forums.aws.amazon.com\/forum.jspa?forumID=285\">AWS \ud3ec\ub7fc<\/a> \ub610\ub294 \uc77c\ubc18\uc801\uc778 AWS Support \uc5f0\ub77d\ucc98\ub97c \ud1b5\ud574 \ud53c\ub4dc\ubc31\uc744 \ubcf4\ub0b4\uc8fc\uc2dc\uae30 \ubc14\ub78d\ub2c8\ub2e4.<\/p>\n<p><a title=\"\" href=\"https:\/\/aws.amazon.com\/developer\/community\/evangelists\/julien-simon\/\">\u2013 Julien<\/a><\/p>\n<p>&nbsp;<\/p>\n<p>&nbsp;<\/p>\n<p>Source: <a href=\"https:\/\/aws.amazon.com\/ko\/blogs\/korea\/amazon-sagemaker-debugger-debug-your-machine-learning-models\/\" target=\"_blank\" rel=\"noopener noreferrer\">Amazon SageMaker Debugger \u2013 \uae30\uacc4 \ud559\uc2b5 \ubaa8\ub378 \ud559\uc2b5 \uacfc\uc815 \ub514\ubc84\uae45 \uae30\ub2a5 \ucd9c\uc2dc (\uc11c\uc6b8 \ub9ac\uc804 \ud3ec\ud568)<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<div class=\"mh-excerpt\"><p>Amazon SageMaker Debugger \u2013 \uae30\uacc4 \ud559\uc2b5 \ubaa8\ub378 \ud559\uc2b5 \uacfc\uc815 \ub514\ubc84\uae45 \uae30\ub2a5 \ucd9c\uc2dc (\uc11c\uc6b8 \ub9ac\uc804 \ud3ec\ud568) Amazon SageMaker Debugger\ub294 \uae30\uacc4 \ud559\uc2b5(ML) \ud6c8\ub828 \uc791\uc5c5 \uc911 \ubc1c\uc0dd\ud558\ub294 \ubcf5\uc7a1\ud55c \ubb38\uc81c\ub97c \uc790\ub3d9\uc73c\ub85c \uc2dd\ubcc4\ud574\uc8fc\ub294 \uae30\ub2a5\uc785\ub2c8\ub2e4. ML \ubaa8\ub378\uc744 \uad6c\ucd95\ud558\uace0 \ud559\uc2b5\ud558\ub824\uba74 \uacfc\ud559\uacfc \uae30\uc220(\uc694\uc220\uc774\ub77c\uace0 \ub9d0\ud558\ub294 \uc0ac\ub78c\ub3c4 \uc788\uc74c)\uc774 \ubaa8\ub450 \ud544\uc694\ud569\ub2c8\ub2e4. \ub370\uc774\ud130 \uc138\ud2b8\ub97c \uc218\uc9d1\ud558\uace0 \uc900\ube44\ud558\ub294 \uac83\ubd80\ud130 \ub2e4\uc591\ud55c \uc54c\uace0\ub9ac\uc998\uc744 \uc2e4\ud5d8\ud558\uc5ec \ucd5c\uc801\uc758 \ud559\uc2b5 \ud30c\ub77c\ubbf8\ud130(\uacf5\ud3ec\uc758 \ud558\uc774\ud37c\ud30c\ub77c\ubbf8\ud130)\ub97c \ucc3e\ub294 \uac83\uae4c\uc9c0, ML \uc2e4\ubb34\uc790\uac00 \uace0\uc131\ub2a5 \ubaa8\ub378\uc744 \uc81c\uacf5\ud558\uae30\uae4c\uc9c0 \ub118\uc5b4\uc57c \ud560 \ud5c8\ub4e4\uc740 \uaf64 \ub9ce\uc2b5\ub2c8\ub2e4. \uadf8\ub798\uc11c AWS\ub294 \ubaa8\ub4c8\uc2dd\uc758 \uc644\uc804\uad00\ub9ac\ud615 \uc11c\ube44\uc2a4\uc778 Amazon SageMaker\ub97c \ub9cc\ub4e4\uc5c8\uc2b5\ub2c8\ub2e4. \uc774 \uc11c\ube44\uc2a4\ub294 ML \uc6cc\ud06c\ud50c\ub85c\ub97c \uac04\uc18c\ud654\ud558\uace0 \uac00\uc18d\ud654\ud569\ub2c8\ub2e4. ML\ub9cc\ud07c \uba38\ud53c\uc758 \ubc95\uce59\uc774 \uc798 \ub4e4\uc5b4\ub9de\ub294 \uac83\ub3c4 \uc5c6\uc2b5\ub2c8\ub2e4. \uc798\ubabb\ub420 \uac00\ub2a5\uc131\uc774 \uc788\ub294 \ubaa8\ub4e0 \uac83\uc774 \uc790\uc8fc \uc798\ubabb\ub418\ub2c8\uae4c\uc694. \ud2b9\ud788, \ud559\uc2b5 \ud504\ub85c\uc138\uc2a4\uc5d0\uc11c \ubc1c\uc0dd\ud558\ub294 \ubd88\ubd84\uba85\ud55c \ub2e4\uc218\uc758 \ubb38\uc81c\ub85c \uc778\ud574 \ubaa8\ub378\uc774 \ub370\uc774\ud130 \uc138\ud2b8\uc5d0 \uc788\ub294 \ud328\ud134\uc744 \uc62c\ubc14\ub974\uac8c \ucd94\ucd9c\ud558\uace0 \ud559\uc2b5\ud558\ub294 \ub370 \ucc28\uc9c8\uc774 \uc0dd\uae41\ub2c8\ub2e4. ML \ub77c\uc774\ube0c\ub7ec\ub7ec\uc758 \uc18c\ud504\ud2b8\uc6e8\uc5b4 \ubc84\uadf8\ub97c \ub9d0\ud558\ub294 \uac8c \uc544\ub2d9\ub2c8\ub2e4. \ubb3c\ub860, \ubc84\uadf8\ub3c4 \ubc1c\uc0dd\ud558\uae30\ub294 \ud569\ub2c8\ub2e4. \uadf8\ub7ec\ub098 \ub300\ubd80\ubd84\uc758 \ud559\uc2b5 \uc791\uc5c5\uc774 \uc2e4\ud328\ud558\ub294 \uc774\uc720\ub294 \ubd80\uc801\uc808\ud55c \ud30c\ub77c\ubbf8\ud130 \ucd08\uae30\ud654, \uacb0\ud568\uc774 \uc788\ub294 \ud558\uc774\ud37c\ud30c\ub77c\ubbf8\ud130\uc758 \uc870\ud569, \uc790\uccb4 \ucf54\ub4dc\uc758 \uc124\uacc4 \ubb38\uc81c \ub4f1\uc5d0 <a class=\"mh-excerpt-more\" href=\"https:\/\/jirak.net\/wp\/amazon-sagemaker-debugger-%ea%b8%b0%ea%b3%84-%ed%95%99%ec%8a%b5-%eb%aa%a8%eb%8d%b8-%ed%95%99%ec%8a%b5-%ea%b3%bc%ec%a0%95-%eb%94%94%eb%b2%84%ea%b9%85-%ea%b8%b0%eb%8a%a5-%ec%b6%9c%ec%8b%9c\/\" title=\"Amazon SageMaker Debugger \u2013 \uae30\uacc4 \ud559\uc2b5 \ubaa8\ub378 \ud559\uc2b5 \uacfc\uc815 \ub514\ubc84\uae45 \uae30\ub2a5 \ucd9c\uc2dc (\uc11c\uc6b8 \ub9ac\uc804 \ud3ec\ud568)\">[ more&#8230; ]<\/a><\/p>\n<\/div>","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[169],"tags":[656],"class_list":["post-34532","post","type-post","status-publish","format-standard","hentry","category-news","tag-aws"],"amp_enabled":true,"_links":{"self":[{"href":"https:\/\/jirak.net\/wp\/wp-json\/wp\/v2\/posts\/34532","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/jirak.net\/wp\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/jirak.net\/wp\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/jirak.net\/wp\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/jirak.net\/wp\/wp-json\/wp\/v2\/comments?post=34532"}],"version-history":[{"count":1,"href":"https:\/\/jirak.net\/wp\/wp-json\/wp\/v2\/posts\/34532\/revisions"}],"predecessor-version":[{"id":34533,"href":"https:\/\/jirak.net\/wp\/wp-json\/wp\/v2\/posts\/34532\/revisions\/34533"}],"wp:attachment":[{"href":"https:\/\/jirak.net\/wp\/wp-json\/wp\/v2\/media?parent=34532"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/jirak.net\/wp\/wp-json\/wp\/v2\/categories?post=34532"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/jirak.net\/wp\/wp-json\/wp\/v2\/tags?post=34532"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}