{"id":38125,"date":"2020-08-18T16:17:15","date_gmt":"2020-08-18T07:17:15","guid":{"rendered":"https:\/\/jirak.net\/wp\/amazon-ecs%ec%97%90%ec%84%9c-%ea%b8%b0%ea%b3%84-%ed%95%99%ec%8a%b5-%ec%b6%94%eb%a1%a0%ec%9d%84-%ec%9c%84%ed%95%9c-ec2-inf1-%ec%9d%b8%ec%8a%a4%ed%84%b4%ec%8a%a4-%ec%a0%95%ec%8b%9d-%ec%a7%80%ec%9b%90\/"},"modified":"2020-08-18T16:34:08","modified_gmt":"2020-08-18T07:34:08","slug":"amazon-ecs%ec%97%90%ec%84%9c-%ea%b8%b0%ea%b3%84-%ed%95%99%ec%8a%b5-%ec%b6%94%eb%a1%a0%ec%9d%84-%ec%9c%84%ed%95%9c-ec2-inf1-%ec%9d%b8%ec%8a%a4%ed%84%b4%ec%8a%a4-%ec%a0%95%ec%8b%9d-%ec%a7%80%ec%9b%90","status":"publish","type":"post","link":"https:\/\/jirak.net\/wp\/amazon-ecs%ec%97%90%ec%84%9c-%ea%b8%b0%ea%b3%84-%ed%95%99%ec%8a%b5-%ec%b6%94%eb%a1%a0%ec%9d%84-%ec%9c%84%ed%95%9c-ec2-inf1-%ec%9d%b8%ec%8a%a4%ed%84%b4%ec%8a%a4-%ec%a0%95%ec%8b%9d-%ec%a7%80%ec%9b%90\/","title":{"rendered":"Amazon ECS\uc5d0\uc11c \uae30\uacc4 \ud559\uc2b5 \ucd94\ub860\uc744 \uc704\ud55c EC2 Inf1 \uc778\uc2a4\ud134\uc2a4 \uc815\uc2dd \uc9c0\uc6d0"},"content":{"rendered":"<p>Amazon ECS\uc5d0\uc11c \uae30\uacc4 \ud559\uc2b5 \ucd94\ub860\uc744 \uc704\ud55c EC2 Inf1 \uc778\uc2a4\ud134\uc2a4 \uc815\uc2dd \uc9c0\uc6d0<br \/>\n<img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/jirak.net\/wp\/wp-content\/uploads\/2020\/08\/Capture-de\u0301cran-2020-08-03-a\u0300-09.24.33.png\" width=\"969\" height=\"302\"><\/p>\n<p>\uae30\uacc4 \ud559\uc2b5\uacfc \ub525 \ub7ec\ub2dd \ubaa8\ub378\uc774 \ub354 \uc815\uad50\ud574\uc9d0\uc5d0 \ub530\ub77c \ub192\uc740 \ucc98\ub9ac\ub7c9\uc73c\ub85c \ube60\ub978 \uc608\uce21\uc744 \uc81c\uacf5\ud558\ub294 \ub370 \ud544\uc694\ud55c \ud558\ub4dc\uc6e8\uc5b4 \uac00\uc18d\uc758 \uc911\uc694\uc131\uc774 \uc810\uc810 \ub354 \ucee4\uc9c0\uace0 \uc788\uc2b5\ub2c8\ub2e4. \uc624\ub298\ubd80\ud130, AWS \uace0\uac1d\uc740 <a title=\"\" href=\"https:\/\/aws.amazon.com\/ecs\/\">Amazon ECS<\/a>\uc5d0\uc11c Amazon EC2 <a href=\"https:\/\/aws.amazon.com\/ec2\/instance-types\/inf1\/\">Inf1<\/a> \uc778\uc2a4\ud134\uc2a4\ub97c \uc0ac\uc6a9\ud558\uc5ec \ud074\ub77c\uc6b0\ub4dc\uc5d0\uc11c \uc131\ub2a5\uc744 \uac1c\uc120\ud558\uace0 \uc608\uce21 \ube44\uc6a9\uc744 \uc808\uac10\ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4. \uc774\ub7ec\ud55c \uc778\uc2a4\ud134\uc2a4\ub294 \uc9c0\ub09c \uba87 \uc8fc \ub3d9\uc548 <a title=\"\" href=\"https:\/\/aws.amazon.com\/eks\/\">Amazon Elastic Kubernetes Service<\/a>\uc5d0\uc11c\ub3c4 <a href=\"https:\/\/aws.amazon.com\/ko\/blogs\/korea\/amazon-eks-now-supports-ec2-inf1-instances\/\">\uc81c\uacf5<\/a>\ub418\uc5c8\uc2b5\ub2c8\ub2e4.<\/p>\n<p><strong><span style=\"text-decoration: underline\">EC2 Inf1 \uc778\uc2a4\ud134\uc2a4\uc5d0 \ub300\ud55c \uae30\ubcf8 \uc815\ubcf4<\/span><\/strong><br \/> <a href=\"https:\/\/aws.amazon.com\/ec2\/instance-types\/inf1\/\">Inf1<\/a> \uc778\uc2a4\ud134\uc2a4\ub294 AWS re:Invent 2019\uc5d0\uc11c \ucd9c\uc2dc\ub418\uc5c8\uc2b5\ub2c8\ub2e4. \uc774 \uc778\uc2a4\ud134\uc2a4\ub294 AWS\uac00 \uae30\uacc4 \ud559\uc2b5 \ucd94\ub860 \uc6cc\ud06c\ub85c\ub4dc\ub97c \uac00\uc18d\ud654\ud558\uae30 \uc704\ud574 \ucc98\uc74c\ubd80\ud130 \ube4c\ub4dc\ud55c \ub9de\ucda4\ud615 \uce69\uc778 <a title=\"AWS Inferentia\" href=\"https:\/\/aws.amazon.com\/machine-learning\/inferentia\/\">AWS Inferentia<\/a>\uc5d0 \uc758\ud574 \uc9c0\uc6d0\ub429\ub2c8\ub2e4.<\/p>\n<p>Inf1 \uc778\uc2a4\ud134\uc2a4\ub294 \ucd5c\ub300 100Gbps\uc758 \ub124\ud2b8\uc6cc\ud06c \ub300\uc5ed\ud3ed \ubc0f \ucd5c\ub300 19Gbps\uc758 <a title=\"\" href=\"https:\/\/aws.amazon.com\/ebs\/\">EBS<\/a> \ub300\uc5ed\ud3ed\uc73c\ub85c 1, 4 \ub610\ub294 16\uac1c\uc758 <a title=\"AWS Inferentia\" href=\"https:\/\/aws.amazon.com\/machine-learning\/inferentia\/\">AWS Inferentia<\/a> \uce69\uacfc \ud568\uaed8 \ub2e4\uc591\ud55c \ud06c\uae30\ub85c \uc81c\uacf5\ub429\ub2c8\ub2e4. <a title=\"AWS Inferentia\" href=\"https:\/\/aws.amazon.com\/machine-learning\/inferentia\/\">AWS Inferentia<\/a> \uce69\uc5d0\ub294 \ub124 \uac1c\uc758 NeuronCore\uac00 \ud3ec\ud568\ub418\uc5b4 \uc788\uc2b5\ub2c8\ub2e4. \uac01 \ucf54\uc5b4\ub294 \uace0\uc131\ub2a5 \uc2dc\uc2a4\ud1a8\ub9ad \ubc30\uc5f4 \ud589\ub82c \uacf1\uc148 \uc5d4\uc9c4\uc744 \uad6c\ud604\ud558\uc5ec \ucee8\ubcfc\ub8e8\uc158 \ubc0f \ud2b8\ub79c\uc2a4\ud3ec\uba38\uc640 \uac19\uc740 \uc77c\ubc18\uc801\uc778 \ub525 \ub7ec\ub2dd \uc5f0\uc0b0\uc758 \uc18d\ub3c4\ub97c \ud06c\uac8c \ub192\uc5ec\uc90d\ub2c8\ub2e4. \ub610\ud55c NeuronCore\uc5d0\ub294 \ub300\uc6a9\ub7c9 \uc628-\uce69(on-chip) \uce90\uc2dc\uac00 \uc7a5\ucc29\ub418\uc5b4 \uc788\uc5b4 \uc678\ubd80 \uba54\ubaa8\ub9ac \uc561\uc138\uc2a4\ub97c \uc904\uc784\uc73c\ub85c\uc368 \ud504\ub85c\uc138\uc2a4\uc758 I\/O \uc2dc\uac04\uc744 \uc808\uac10\ud569\ub2c8\ub2e4. Inf1 \uc778\uc2a4\ud134\uc2a4\uc5d0\uc11c \uc5ec\ub7ec AWS Inferentia \uce69\uc744 \uc0ac\uc6a9\ud560 \uc218 \uc788\uc73c\uba74 \uce69 \uac04\uc5d0 \ubaa8\ub378\uc744 \ubd84\ud560\ud558\uc5ec \uce90\uc2dc \uba54\ubaa8\ub9ac\uc5d0 \uc644\uc804\ud788 \uc800\uc7a5\ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4. \ub610\ub294 \ub2e8\uc77c Inf1 \uc778\uc2a4\ud134\uc2a4\uc5d0\uc11c \ub2e4\uc911 \ubaa8\ub378 \uc608\uce21\uc744 \uc81c\uacf5\ud558\uae30 \uc704\ud574 \uc5ec\ub7ec \ubaa8\ub378 \uac04\uc5d0 AWS Inferentia \uce69\uc758 NeuronCore\ub97c \ubd84\ud560\ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4.<\/p>\n<p><strong><span style=\"text-decoration: underline\">EC2 Inf1 \uc778\uc2a4\ud134\uc2a4\uc758 \ubaa8\ub378 \ucef4\ud30c\uc77c<\/span><\/strong><br \/> Inf1 \uc778\uc2a4\ud134\uc2a4\uc5d0\uc11c \uae30\uacc4 \ud559\uc2b5 \ubaa8\ub378\uc744 \uc2e4\ud589\ud558\ub824\uba74 <a href=\"https:\/\/github.com\/aws\/aws-neuron-sdk\">AWS Neuron SDK<\/a>\ub97c \uc0ac\uc6a9\ud558\uc5ec \ud558\ub4dc\uc6e8\uc5b4\uc5d0 \ucd5c\uc801\ud654\ub41c \ud45c\ud604\uc73c\ub85c \uae30\uacc4 \ud559\uc2b5 \ubaa8\ub378\uc744 \ucef4\ud30c\uc77c\ud574\uc57c \ud569\ub2c8\ub2e4. \ubaa8\ub4e0 \ub3c4\uad6c\ub294 <a href=\"https:\/\/aws.amazon.com\/machine-learning\/amis\/\">AWS Deep Learning AMI<\/a>\uc5d0\uc11c \uc27d\uac8c \uc0ac\uc6a9\ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4. \ub610\ud55c \uc790\uccb4 \uc778\uc2a4\ud134\uc2a4\uc5d0 \ubaa8\ub4e0 \ub3c4\uad6c\ub97c \uc124\uce58\ud560 \uc218\ub3c4 \uc788\uc2b5\ub2c8\ub2e4. \uc790\uc138\ud55c \uc9c0\uce68\uc740 Deep Learning AMI <a href=\"https:\/\/docs.aws.amazon.com\/dlami\/latest\/devguide\/tutorial-inferentia.html\">\uc124\uba85\uc11c<\/a>\uc640 AWS Neuron SDK <a href=\"https:\/\/github.com\/aws\/aws-neuron-sdk\/blob\/master\/README.md#getting-started\">\ub9ac\ud3ec\uc9c0\ud1a0\ub9ac<\/a>\uc758 TensorFlow, PyTorch \ubc0f Apache MXNet\uc5d0 \ub300\ud55c \uc790\uc2b5\uc11c\uc5d0\uc11c \ucc3e\uc544\ubcfc \uc218 \uc788\uc2b5\ub2c8\ub2e4.<\/p>\n<p>\uc544\ub798 \ub370\ubaa8\uc5d0\uc11c\ub294 Inf1 \uc778\uc2a4\ud134\uc2a4\uc758 ECS \ud074\ub7ec\uc2a4\ud130\uc5d0 Neuron \ucd5c\uc801\ud654 \ubaa8\ub378\uc744 \ubc30\ud3ec\ud558\ub294 \ubc29\ubc95 \ubc0f <a href=\"https:\/\/www.tensorflow.org\/tfx\/guide\/serving\">TensorFlow Serving<\/a>\uc744 \ud1b5\ud574 \uc608\uce21\uc744 \uc81c\uacf5\ud558\ub294 \ubc29\ubc95\uc744 \ubcf4\uc5ec\uc90d\ub2c8\ub2e4. \ubb38\uc81c\uc758 \ubaa8\ub378\uc740 \uc790\uc5f0\uc5b4 \ucc98\ub9ac \uc791\uc5c5\uc744 \uc704\ud55c \ucd5c\ucca8\ub2e8 \ubaa8\ub378\uc778 <a href=\"https:\/\/github.com\/google-research\/bert\">BERT<\/a>\uc785\ub2c8\ub2e4. BERT\ub294 \uc218\uc5b5 \uac1c\uc758 \ud30c\ub77c\ubbf8\ud130\uac00 \uc788\ub294 \uac70\ub300\ud55c \ubaa8\ub378\ub85c, \ud558\ub4dc\uc6e8\uc5b4 \uac00\uc18d\uc5d0 \uc544\uc8fc \uc801\ud569\ud55c \ud6c4\ubcf4\uc785\ub2c8\ub2e4.<\/p>\n<p><span style=\"text-decoration: underline\"><strong>Amazon ECS \ud074\ub7ec\uc2a4\ud130 \uc0dd\uc131<\/strong><\/span><br \/> \ud074\ub7ec\uc2a4\ud130 \uc0dd\uc131\uc740 \uac00\uc7a5 \uac04\ub2e8\ud55c \uc791\uc5c5\uc785\ub2c8\ub2e4. <code><a href=\"https:\/\/docs.aws.amazon.com\/AmazonECS\/latest\/APIReference\/API_CreateCluster.html\">CreateCluster<\/a><\/code> API\ub97c \ud638\ucd9c\ud558\uba74 \ub429\ub2c8\ub2e4.<\/p>\n<p><code>$ aws ecs create-cluster --cluster-name ecs-inf1-demo<\/code><\/p>\n<p>\uc989\uc2dc \ucf58\uc194\uc5d0 \uc0c8 \ud074\ub7ec\uc2a4\ud130\uac00 \ud45c\uc2dc\ub429\ub2c8\ub2e4.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-39411\" style=\"border: 1px solid black\" src=\"https:\/\/d2908q01vomqb2.cloudfront.net\/da4b9237bacccdf19c0760cab7aec4a8359010b0\/2020\/08\/03\/Capture-d\u2019e\u0301cran-2020-08-03-a\u0300-09.24.33.png\" alt=\"\" width=\"969\" height=\"302\" \/><\/p>\n<p>\uc774 \ud074\ub7ec\uc2a4\ud130\uc5d0 \uc778\uc2a4\ud134\uc2a4\ub97c \ucd94\uac00\ud558\uae30 \uc804\uc5d0 \uba87 \uac00\uc9c0 \uc0ac\uc804 \uc870\uac74\uc744 \ucda9\uc871\ud574\uc57c \ud569\ub2c8\ub2e4.<\/p>\n<ul>\n<li>ECS \uc778\uc2a4\ud134\uc2a4\uc5d0 \ub300\ud55c <a title=\"\" href=\"https:\/\/aws.amazon.com\/iam\/\">AWS Identity and Access Management(IAM)<\/a> \uc5ed\ud560: \uc544\uc9c1 \uc5c6\ub294 \uacbd\uc6b0 <a href=\"https:\/\/docs.aws.amazon.com\/AmazonECS\/latest\/developerguide\/instance_IAM_role.html\">\uc124\uba85\uc11c<\/a>\uc5d0\uc11c \uc9c0\uce68\uc744 \ud655\uc778\ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4. \uc5ec\uae30\uc11c \uc81c \uc5ed\ud560\uc758 \uc774\ub984\uc740 <code>ECSInstanceRole<\/code>\uc785\ub2c8\ub2e4.<\/li>\n<li><a href=\"https:\/\/github.com\/aws\/amazon-ecs-agent\">ECS \uc5d0\uc774\uc804\ud2b8<\/a>\uc640 \uc9c0\uc6d0 <a href=\"https:\/\/aws.amazon.com\/ec2\/instance-types\/inf1\/\">Inf1<\/a> \uc778\uc2a4\ud134\uc2a4\uac00 \ud3ec\ud568\ub41c Amazon Machine Image(AMI): \uc9c1\uc811 \uad6c\ucd95\ud558\uac70\ub098 <a href=\"https:\/\/docs.aws.amazon.com\/AmazonECS\/latest\/developerguide\/ecs-optimized_AMI.html\">ECS-optimized AMI for Inferentia<\/a>\ub97c \uc0ac\uc6a9\ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4. us-east-1 \ub9ac\uc804\uc5d0\uc11c \uc774 AMI\uc758 ID\ub294 <code>ami-04450f16e0cd20356<\/code>\uc785\ub2c8\ub2e4.<\/li>\n<li>TensorFlow Serving(gRPC\uc758 \uacbd\uc6b0 8500, HTTP\uc758 \uacbd\uc6b0 8501)\uc744 \uc704\ud55c \ub124\ud2b8\uc6cc\ud06c \ud3ec\ud2b8\ub97c \uc5ec\ub294 \ubcf4\uc548 \uadf8\ub8f9: \uc81c\uac00 \uc0ac\uc6a9\ud560 \uc2dd\ubcc4\uc790\ub294 <code>sg-0994f5c7ebbb48270<\/code>\uc785\ub2c8\ub2e4.<\/li>\n<li>ssh \uc561\uc138\uc2a4\ub97c \uc6d0\ud558\ub294 \uacbd\uc6b0 \ubcf4\uc548 \uadf8\ub8f9\uc5d0\uc11c \ud3ec\ud2b8 22\ub3c4 \uc5f4\uc5b4\uc57c \ud558\uba70 SSH \ud0a4 \ud398\uc5b4\uc758 \uc774\ub984\uc744 \uc804\ub2ec\ud574\uc57c \ud569\ub2c8\ub2e4. \uc81c \ubcf4\uc548 \uadf8\ub8f9\uc758 \uc774\ub984\uc740 <code>admin<\/code>\uc785\ub2c8\ub2e4.<\/li>\n<\/ul>\n<p>\uc778\uc2a4\ud134\uc2a4\ub97c \ud074\ub7ec\uc2a4\ud130\uc5d0 \uc870\uc778\ud558\ub824\uba74 \uc791\uc740 \uc0ac\uc6a9\uc790 \ub370\uc774\ud130 \ud30c\uc77c\uc744 \uc0dd\uc131\ud574\uc57c \ud569\ub2c8\ub2e4. \uc774 \ud30c\uc77c\uc744 \uc0dd\uc131\ud558\ub824\uba74 ECS \uc5d0\uc774\uc804\ud2b8\uc758 \uad6c\uc131 \ud30c\uc77c\uc5d0 \uc791\uc131\ub418\ub294 \ud658\uacbd \ubcc0\uc218\uc5d0 \ud074\ub7ec\uc2a4\ud130 \uc774\ub984\uc744 \uc800\uc7a5\ud569\ub2c8\ub2e4.<\/p>\n<p><code>#!\/bin\/bash<\/code><br \/> <code>echo ECS_CLUSTER=ecs-inf1-demo &gt;&gt; \/etc\/ecs\/ecs.config<\/code><\/p>\n<p>\uc124\uc815\uc774 \ub05d\ub0ac\uc2b5\ub2c8\ub2e4. \uc774\uc81c <code><a href=\"https:\/\/docs.aws.amazon.com\/AWSEC2\/latest\/APIReference\/API_RunInstances.html\">RunInstances<\/a><\/code> API\ub97c \uc0ac\uc6a9\ud558\uc5ec Inf1 \uc778\uc2a4\ud134\uc2a4 \uba87 \uac1c\ub97c \ucd94\uac00\ud569\ub2c8\ub2e4. \ube44\uc6a9\uc744 \ucd5c\uc18c\ud654\ud558\uae30 \uc704\ud574 <a href=\"https:\/\/docs.aws.amazon.com\/AWSEC2\/latest\/UserGuide\/using-spot-instances.html\">\uc2a4\ud31f \uc778\uc2a4\ud134\uc2a4<\/a>\ub97c \uc694\uccad\ud569\ub2c8\ub2e4.<\/p>\n<p><code>$ aws ec2 run-instances <\/code><br \/> <code>--image-id ami-04450f16e0cd20356 <\/code><br \/> <code>--count 2 <\/code><br \/> <code>--instance-type inf1.xlarge <\/code><br \/> <code>--instance-market-options '{&quot;MarketType&quot;:&quot;spot&quot;}' <\/code><br \/> <code>--tag-specifications 'ResourceType=instance,Tags=[{Key=Name,Value=ecs-inf1-demo}]' <\/code><br \/> <code>--key-name admin <\/code><br \/> <code>--security-group-ids sg-0994f5c7ebbb48270 <\/code><br \/> <code>--iam-instance-profile Name=ecsInstanceRole <\/code><br \/> <code>--user-data file:\/\/user-data.txt<\/code><\/p>\n<p>\ub450 \uc778\uc2a4\ud134\uc2a4\uac00 EC2 \ucf58\uc194\uc5d0 \uc989\uc2dc \ub098\ud0c0\ub0a9\ub2c8\ub2e4.<\/p>\n<p><a href=\"https:\/\/d2908q01vomqb2.cloudfront.net\/da4b9237bacccdf19c0760cab7aec4a8359010b0\/2020\/08\/03\/Capture-d\u2019e\u0301cran-2020-08-03-a\u0300-09.52.16.png\"><img loading=\"lazy\" decoding=\"async\" class=\"size-full wp-image-39415 aligncenter\" style=\"border: 1px solid black\" src=\"https:\/\/d2908q01vomqb2.cloudfront.net\/da4b9237bacccdf19c0760cab7aec4a8359010b0\/2020\/08\/03\/Capture-d\u2019e\u0301cran-2020-08-03-a\u0300-09.52.16.png\" alt=\"Inf1 \uc778\uc2a4\ud134\uc2a4\" width=\"993\" height=\"234\" \/><\/a><\/p>\n<p>\uba87 \ubd84\uc774 \uc9c0\ub098\uba74 \ud074\ub7ec\uc2a4\ud130\uc5d0\uc11c \uc791\uc5c5\uc744 \uc2e4\ud589\ud560 \uc218 \uc788\uac8c \ub429\ub2c8\ub2e4.<\/p>\n<p><a href=\"https:\/\/d2908q01vomqb2.cloudfront.net\/da4b9237bacccdf19c0760cab7aec4a8359010b0\/2020\/08\/03\/Capture-d\u2019e\u0301cran-2020-08-03-a\u0300-09.54.34.png\"><img loading=\"lazy\" decoding=\"async\" class=\"size-full wp-image-39417 aligncenter\" style=\"border: 1px solid black\" src=\"https:\/\/d2908q01vomqb2.cloudfront.net\/da4b9237bacccdf19c0760cab7aec4a8359010b0\/2020\/08\/03\/Capture-d\u2019e\u0301cran-2020-08-03-a\u0300-09.54.34.png\" alt=\"Inf1 \uc778\uc2a4\ud134\uc2a4\" width=\"982\" height=\"643\" \/><\/a><\/p>\n<p>\uc778\ud504\ub77c\uac00 \uc900\ube44\ub418\uc5c8\uc2b5\ub2c8\ub2e4. \uc774\uc81c BERT \ubaa8\ub378\uc744 \uc800\uc7a5\ud560 \ucee8\ud14c\uc774\ub108\ub97c \uad6c\ucd95\ud569\uc2dc\ub2e4.<\/p>\n<p><span style=\"text-decoration: underline\"><strong>Inf1 \uc778\uc2a4\ud134\uc2a4\uc6a9 \ucee8\ud14c\uc774\ub108 \uad6c\ucd95<\/strong><\/span><br \/> <code>Dockerfile<\/code>\uc740 \uaf64 \uac04\ub2e8\ud569\ub2c8\ub2e4.<\/p>\n<ul>\n<li><a href=\"https:\/\/hub.docker.com\/_\/amazonlinux\/\">Amazon Linux 2<\/a> \uc774\ubbf8\uc9c0\uc5d0\uc11c \uc2dc\uc791\ud558\uc5ec TensorFlow Serving\uc5d0 \uc0ac\uc6a9\ud560 \ud3ec\ud2b8 8500\uacfc 8501\uc744 \uc5fd\ub2c8\ub2e4.<\/li>\n<li>\uadf8\ub7f0 \ub2e4\uc74c Neuron SDK \ub9ac\ud3ec\uc9c0\ud1a0\ub9ac\ub97c \ub9ac\ud3ec\uc9c0\ud1a0\ub9ac \ubaa9\ub85d\uc5d0 \ucd94\uac00\ud558\uace0 AWS Inferentia\ub97c \uc9c0\uc6d0\ud558\ub294 TensorFlow Serving \ubc84\uc804\uc744 \uc124\uce58\ud569\ub2c8\ub2e4.<\/li>\n<li>\ub9c8\uc9c0\ub9c9\uc73c\ub85c BERT \ubaa8\ub378\uc744 \ucee8\ud14c\uc774\ub108 \ub0b4\ubd80\uc5d0 \ubcf5\uc0ac\ud558\uace0 \uc2dc\uc791\ud560 \ub54c \ub85c\ub4dc\ud569\ub2c8\ub2e4.<\/li>\n<\/ul>\n<p>\ub2e4\uc74c\uc740 \uc804\uccb4 \ud30c\uc77c\uc785\ub2c8\ub2e4.<\/p>\n<p><code>FROM amazonlinux:2<\/code><br \/> <code>EXPOSE 8500 8501<\/code><br \/> <code>RUN echo $'[neuron] n<\/code><br \/> <code>name=Neuron YUM Repository n<\/code><br \/> <code>baseurl=https:\/\/yum.repos.neuron.amazonaws.com n<\/code><br \/> <code>enabled=1' &gt; \/etc\/yum.repos.d\/neuron.repo<br \/> <\/code><code>RUN rpm --import https:\/\/yum.repos.neuron.amazonaws.com\/GPG-PUB-KEY-AMAZON-AWS-NEURON.PUB<\/code><br \/> <code>RUN yum install -y tensorflow-model-server-neuron<\/code><br \/> <code>COPY bert \/bert<\/code><br \/> <code>CMD [&quot;\/bin\/sh&quot;, &quot;-c&quot;, &quot;\/usr\/local\/bin\/tensorflow_model_server_neuron --port=8500 --rest_api_port=8501 --model_name=bert --model_base_path=\/bert\/&quot;]<\/code><\/p>\n<p>\uadf8\ub7f0 \ub2e4\uc74c \ucee8\ud14c\uc774\ub108\ub97c \uad6c\ucd95\ud558\uace0 <a title=\"\" href=\"https:\/\/aws.amazon.com\/ecr\/\">Amazon Elastic Container Registry<\/a>\uc5d0\uc11c \ud638\uc2a4\ud305\ub418\ub294 \ub9ac\ud3ec\uc9c0\ud1a0\ub9ac\ub85c \ud478\uc2dc\ud569\ub2c8\ub2e4. \ud3c9\uc0c1\uc2dc\uc640 \ub9c8\ucc2c\uac00\uc9c0\ub85c\uc694.<\/p>\n<p><code>$ docker build -t neuron-tensorflow-inference .<\/code><\/p>\n<p><code>$ aws ecr create-repository --repository-name ecs-inf1-demo<\/code><\/p>\n<p><code>$ aws ecr get-login-password | docker login --username AWS --password-stdin 123456789012.dkr.ecr.us-east-1.amazonaws.com<\/code><\/p>\n<p><code>$ docker tag neuron-tensorflow-inference 123456789012.dkr.ecr.us-east-1.amazonaws.com\/ecs-inf1-demo:latest<\/code><\/p>\n<p><code>$ docker push<\/code><\/p>\n<p>\uc774\uc81c \ud074\ub7ec\uc2a4\ud130\uc5d0\uc11c \uc774 \ucee8\ud14c\uc774\ub108\ub97c \uc2e4\ud589\ud558\uae30 \uc704\ud574 <a href=\"https:\/\/docs.aws.amazon.com\/AmazonECS\/latest\/developerguide\/task_definitions.html\">\uc791\uc5c5 \uc815\uc758<\/a>\ub97c \uc0dd\uc131\ud574\uc57c \ud569\ub2c8\ub2e4.<\/p>\n<p><strong><span style=\"text-decoration: underline\">Inf1 \uc778\uc2a4\ud134\uc2a4\uc5d0 \ub300\ud55c \uc791\uc5c5 \uc815\uc758 \uc0dd\uc131<br \/> <\/span><\/strong>\uc544\uc9c1 \uc5c6\ub294 \uacbd\uc6b0 \uba3c\uc800 \uc2e4\ud589 \uc5ed\ud560(ECS \uc5d0\uc774\uc804\ud2b8\uac00 \uc0ac\uc6a9\uc790 \ub300\uc2e0 API \ud638\ucd9c\uc744 \uc218\ud589\ud560 \uc218 \uc788\ub3c4\ub85d \ud5c8\uc6a9\ud558\ub294 \uc5ed\ud560)\uc744 \uc0dd\uc131\ud574\uc57c \ud569\ub2c8\ub2e4. \uc790\uc138\ud55c \ub0b4\uc6a9\uc740 <a href=\"https:\/\/docs.aws.amazon.com\/AmazonECS\/latest\/developerguide\/task_execution_IAM_role.html\">\uc124\uba85\uc11c<\/a>\ub97c \ucc38\uc870\ud558\uc2ed\uc2dc\uc624. \uc81c \uc2e4\ud589 \uc5ed\ud560\uc758 \uc774\ub984\uc740 <code>ecsTaskExecutionRole<\/code>\uc785\ub2c8\ub2e4.<\/p>\n<p>\uc544\ub798\uc5d0 \uc804\uccb4 \uc791\uc5c5 \uc815\uc758\uac00 \ub098\uc640 \uc788\uc2b5\ub2c8\ub2e4. \ubcf4\uc2dc\ub2e4\uc2dc\ud53c \ub450 \uac1c\uc758 \ucee8\ud14c\uc774\ub108\uac00 \uc788\uc2b5\ub2c8\ub2e4.<\/p>\n<ul>\n<li>\uc81c\uac00 \uad6c\ucd95\ud55c BERT \ucee8\ud14c\uc774\ub108\ub294<\/li>\n<li><code>neuron-rtd<\/code>\ub77c\ub294 \uc0ac\uc774\ub4dc\uce74 \ucee8\ud14c\uc774\ub108\uc785\ub2c8\ub2e4. \uc774 \ucee8\ud14c\uc774\ub108\ub294 BERT \ucee8\ud14c\uc774\ub108\uac00 Inf1 \uc778\uc2a4\ud134\uc2a4\uc5d0 \uc788\ub294 NeuronCores\uc5d0 \uc561\uc138\uc2a4\ud558\ub294 \ub370 \uc0ac\uc6a9\ub429\ub2c8\ub2e4. <code>AWS_NEURON_VISIBLE_DEVICES<\/code> \ud658\uacbd \ubcc0\uc218\ub97c \uc0ac\uc6a9\ud558\uba74 \ucee8\ud14c\uc774\ub108\uc5d0 \uc0ac\uc6a9\ub420 \uc218 \uc788\ub294 \ud658\uacbd \ubcc0\uc218\ub97c \uc81c\uc5b4\ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4. \uc774 \ud658\uacbd \ubcc0\uc218\ub97c \uc0ac\uc6a9\ud558\uc5ec \ud558\ub098 \uc774\uc0c1\uc758 \ud2b9\uc815 NeuronCores\uc5d0 \ucee8\ud14c\uc774\ub108\ub97c \uace0\uc815\ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4.<\/li>\n<\/ul>\n<pre><code class=\"lang-json\">{\n  &quot;family&quot;: &quot;ecs-neuron&quot;,\n  &quot;executionRoleArn&quot;: &quot;arn:aws:iam::123456789012:role\/ecsTaskExecutionRole&quot;,\n  &quot;containerDefinitions&quot;: [\n    {\n      &quot;entryPoint&quot;: [\n        &quot;sh&quot;,\n        &quot;-c&quot;\n      ],\n      &quot;portMappings&quot;: [\n        {\n          &quot;hostPort&quot;: 8500,\n          &quot;protocol&quot;: &quot;tcp&quot;,\n          &quot;containerPort&quot;: 8500\n        },\n        {\n          &quot;hostPort&quot;: 8501,\n          &quot;protocol&quot;: &quot;tcp&quot;,\n          &quot;containerPort&quot;: 8501\n        },\n        {\n          &quot;hostPort&quot;: 0,\n          &quot;protocol&quot;: &quot;tcp&quot;,\n          &quot;containerPort&quot;: 80\n        }\n      ],\n      &quot;command&quot;: [\n        &quot;tensorflow_model_server_neuron --port=8500 --rest_api_port=8501 --model_name=bert --model_base_path=\/bert&quot;\n      ],\n      &quot;cpu&quot;: 0,\n      &quot;environment&quot;: [\n        {\n          &quot;name&quot;: &quot;NEURON_RTD_ADDRESS&quot;,\n          &quot;value&quot;: &quot;unix:\/sock\/neuron-rtd.sock&quot;\n        }\n      ],\n      &quot;mountPoints&quot;: [\n        {\n          &quot;containerPath&quot;: &quot;\/sock&quot;,\n          &quot;sourceVolume&quot;: &quot;sock&quot;\n        }\n      ],\n      &quot;memoryReservation&quot;: 1000,\n      &quot;image&quot;: &quot;123456789012.dkr.ecr.us-east-1.amazonaws.com\/ecs-inf1-demo:latest&quot;,\n      &quot;essential&quot;: true,\n      &quot;name&quot;: &quot;bert&quot;\n    },\n    {\n      &quot;entryPoint&quot;: [\n        &quot;sh&quot;,\n        &quot;-c&quot;\n      ],\n      &quot;portMappings&quot;: [],\n      &quot;command&quot;: [\n        &quot;neuron-rtd -g unix:\/sock\/neuron-rtd.sock&quot;\n      ],\n      &quot;cpu&quot;: 0,\n      &quot;environment&quot;: [\n        {\n          &quot;name&quot;: &quot;AWS_NEURON_VISIBLE_DEVICES&quot;,\n          &quot;value&quot;: &quot;ALL&quot;\n        }\n      ],\n      &quot;mountPoints&quot;: [\n        {\n          &quot;containerPath&quot;: &quot;\/sock&quot;,\n          &quot;sourceVolume&quot;: &quot;sock&quot;\n        }\n      ],\n      &quot;memoryReservation&quot;: 1000,\n      &quot;image&quot;: &quot;790709498068.dkr.ecr.us-east-1.amazonaws.com\/neuron-rtd:latest&quot;,\n      &quot;essential&quot;: true,\n      &quot;linuxParameters&quot;: { &quot;capabilities&quot;: { &quot;add&quot;: [&quot;SYS_ADMIN&quot;, &quot;IPC_LOCK&quot;] } },\n      &quot;name&quot;: &quot;neuron-rtd&quot;\n    }\n  ],\n  &quot;volumes&quot;: [\n    {\n      &quot;name&quot;: &quot;sock&quot;,\n      &quot;host&quot;: {\n        &quot;sourcePath&quot;: &quot;\/tmp\/sock&quot;\n      }\n    }\n  ]\n}<\/code><\/pre>\n<p>\ub9c8\uc9c0\ub9c9\uc73c\ub85c <code><a href=\"https:\/\/docs.aws.amazon.com\/AmazonECS\/latest\/APIReference\/API_RegisterTaskDefinition.html\">RegisterTaskDefinition<\/a><\/code> API\ub97c \ud638\ucd9c\ud558\uc5ec ECS \ubc31\uc5d4\ub4dc\uc5d0 \uc791\uc5c5 \uc815\uc758\ub97c \uc54c\ub9bd\ub2c8\ub2e4.<\/p>\n<p><code>$ aws ecs register-task-definition --cli-input-json file:\/\/inf1-task-definition.json<\/code><\/p>\n<p>\uc774\uc81c \ucee8\ud14c\uc774\ub108\ub97c \uc2e4\ud589\ud558\uace0 \ucee8\ud14c\uc774\ub108\ub97c \uc0ac\uc6a9\ud558\uc5ec \uc608\uce21\uc744 \uc218\ud589\ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4.<\/p>\n<p><span style=\"text-decoration: underline\"><strong>Inf1 \uc778\uc2a4\ud134\uc2a4\uc5d0\uc11c \ucee8\ud14c\uc774\ub108 \uc2e4\ud589<\/strong><\/span><br \/> \uc774 \uc11c\ube44\uc2a4\ub294 \uc608\uce21 \uc11c\ube44\uc2a4\uc774\ubbc0\ub85c \ud074\ub7ec\uc2a4\ud130\uc5d0\uc11c \ud56d\uc0c1 \uc0ac\uc6a9\ud560 \uc218 \uc788\uc5b4\uc57c \ud569\ub2c8\ub2e4. \ub2e8\uc21c\ud788 \uc791\uc5c5\uc744 \uc2e4\ud589\ud558\ub294 \ub300\uc2e0 \ud544\uc694\ud55c \uc218\uc758 \ucee8\ud14c\uc774\ub108 \ubcf5\uc0ac\ubcf8\uc774 \uc2e4\ud589 \uc911\uc778\uc9c0 \ud655\uc778\ud558\uace0 \uc624\ub958\uac00 \ubc1c\uc0dd\ud560 \uacbd\uc6b0 \ub2e4\uc2dc \uc2dc\uc791\ud558\ub294 ECS <a href=\"https:\/\/docs.aws.amazon.com\/AmazonECS\/latest\/developerguide\/ecs_services.html\">\uc11c\ube44\uc2a4<\/a>\ub97c \uc0dd\uc131\ud569\ub2c8\ub2e4.<\/p>\n<p><code>$ aws ecs create-service --cluster ecs-inf1-demo <\/code><br \/> <code>--service-name bert-inf1 <\/code><br \/> <code>--task-definition ecs-neuron:1 <\/code><br \/> <code>--desired-count 1<\/code><\/p>\n<p>\uc7a0\uc2dc \ud6c4 \ub450 \uc791\uc5c5 \ucee8\ud14c\uc774\ub108\uac00 \ubaa8\ub450 \ud074\ub7ec\uc2a4\ud130\uc5d0\uc11c \uc2e4\ud589\ub418\uace0 \uc788\uc74c\uc744 \uc54c \uc218 \uc788\uc2b5\ub2c8\ub2e4.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"size-full wp-image-39426 aligncenter\" style=\"border: 1px solid black\" src=\"https:\/\/d2908q01vomqb2.cloudfront.net\/da4b9237bacccdf19c0760cab7aec4a8359010b0\/2020\/08\/03\/Capture-d\u2019e\u0301cran-2020-08-03-a\u0300-10.37.20-1.png\" alt=\"\" width=\"815\" height=\"439\" \/><\/p>\n<p><strong><span style=\"text-decoration: underline\">ECS \ubc0f Inf1\uc5d0\uc11c BERT\ub85c \uc608\uce21<br \/> <\/span><\/strong>BERT\uc758 \ub0b4\ubd80 \uc791\uc5c5\uc740 \uc774 \uac8c\uc2dc\ubb3c\uc5d0\uc11c \ub2e4\ub8e8\uc9c0 \uc54a\uc2b5\ub2c8\ub2e4. \uc774 \ud2b9\uc815 \ubaa8\ub378\uc740 128\uac1c\uc758 \ud1a0\ud070 \uc2dc\ud000\uc2a4\ub97c \uc608\uc0c1\ud558\uace0 \uc758\ubbf8\ub860\uc801\uc73c\ub85c \ub3d9\ub4f1\ud55c\uc9c0 \ud655\uc778\ud558\uae30 \uc704\ud574 \ube44\uad50\ud558\ub824\ub294 \ub450 \ubb38\uc7a5\uc758 \ub2e8\uc5b4\ub97c \uc778\ucf54\ub529\ud569\ub2c8\ub2e4.<\/p>\n<p>\uc5ec\uae30\uc11c\ub294 \uc608\uce21 \uc9c0\uc5f0 \uc2dc\uac04 \uce21\uc815\uc5d0\ub9cc \uad00\uc2ec\uc774 \uc788\uc73c\ubbc0\ub85c \ub354\ubbf8 \ub370\uc774\ud130\uac00 \uc88b\uc2b5\ub2c8\ub2e4. 128\uac1c\uc758 0\uc73c\ub85c \uad6c\uc131\ub41c \uc2dc\ud000\uc2a4\ub97c \uc800\uc7a5\ud558\ub294 100\uac1c\uc758 \uc608\uce21 \uc694\uccad\uc744 \ube4c\ub4dc\ud569\ub2c8\ub2e4. BERT \ucee8\ud14c\uc774\ub108\uc758 IP \uc8fc\uc18c\ub97c \uc0ac\uc6a9\ud558\uc5ec grpc\ub97c \ud1b5\ud574 TensorFlow Serving \uc5d4\ub4dc\ud3ec\uc778\ud2b8\ub85c \uc694\uccad\uc744 \ubcf4\ub0b4\uace0 \ud3c9\uade0 \uc608\uce21 \uc2dc\uac04\uc744 \uacc4\uc0b0\ud569\ub2c8\ub2e4.<\/p>\n<p>\ub2e4\uc74c\uc740 \uc804\uccb4 \ucf54\ub4dc\uc785\ub2c8\ub2e4.<\/p>\n<pre><code class=\"lang-python\">import numpy as np\nimport grpc\nimport tensorflow as tf\nfrom tensorflow_serving.apis import predict_pb2\nfrom tensorflow_serving.apis import prediction_service_pb2_grpc\nimport time\n\nif __name__ == '__main__':\n    channel = grpc.insecure_channel('18.234.61.31:8500')\n    stub = prediction_service_pb2_grpc.PredictionServiceStub(channel)\n    request = predict_pb2.PredictRequest()\n    request.model_spec.name = 'bert'\n    i = np.zeros([1, 128], dtype=np.int32)\n    request.inputs['input_ids'].CopyFrom(tf.contrib.util.make_tensor_proto(i, shape=i.shape))\n    request.inputs['input_mask'].CopyFrom(tf.contrib.util.make_tensor_proto(i, shape=i.shape))\n    request.inputs['segment_ids'].CopyFrom(tf.contrib.util.make_tensor_proto(i, shape=i.shape))\n\n    latencies = []\n    for i in range(100):\n        start = time.time()\n        result = stub.Predict(request)\n        latencies.append(time.time() - start)\n        print(&quot;Inference successful: {}&quot;.format(i))\n    print (&quot;Ran {} inferences successfully. Latency average = {}&quot;.format(len(latencies), np.average(latencies)))<\/code><\/pre>\n<p>\ud3b8\uc758\uc0c1 <a href=\"https:\/\/aws.amazon.com\/machine-learning\/amis\/\">\ub525 \ub7ec\ub2dd AMI<\/a>\ub97c \uae30\ubc18\uc73c\ub85c \ud558\ub294 EC2 \uc778\uc2a4\ud134\uc2a4\uc5d0\uc11c \uc774 \ucf54\ub4dc\ub97c \uc2e4\ud589\ud558\uace0 \uc788\uc2b5\ub2c8\ub2e4. TensorFlow \ubc0f TensorFlow Serving\uc744 \uc704\ud55c <a href=\"https:\/\/docs.conda.io\/en\/latest\/\">Conda<\/a> \ud658\uacbd\uc774 \uc0ac\uc804 \uc124\uce58\ub418\uc5b4 \uc788\uc73c\ubbc0\ub85c \uc885\uc18d\uc131\uc744 \uc124\uce58\ud558\uc9c0 \uc54a\uc544\ub3c4 \ub429\ub2c8\ub2e4.<\/p>\n<p><code>$ source activate tensorflow_p36<\/code><br \/> <code>$ python predict.py<\/code><\/p>\n<p>\ud3c9\uade0\uc801\uc73c\ub85c \uc608\uce21\uc5d0\ub294 56.5ms\uac00 \uac78\ub838\uc2b5\ub2c8\ub2e4. BERT\ub97c \uc0ac\uc6a9\ud560 \ub54c \uc774 \uc18d\ub3c4\ub294 \uaf64 \ube60\ub978 \uac83\uc785\ub2c8\ub2e4.<\/p>\n<p><code>Ran 100 inferences successfully. Latency average = 0.05647835493087769<\/code><\/p>\n<p><strong><span style=\"text-decoration: underline\">\uc2dc\uc791\ud558\uae30<\/span><\/strong><br \/> \uc624\ub298\ubd80\ud130 <span title=\"\">\ubbf8\uad6d \ub3d9\ubd80(\ubc84\uc9c0\ub2c8\uc544 \ubd81\ubd80)<\/span> \ubc0f <span title=\"\">\ubbf8\uad6d \uc11c\ubd80(\uc624\ub808\uace4)<\/span> \ub9ac\uc804\uc758 <a title=\"\" href=\"https:\/\/aws.amazon.com\/ecs\/\">Amazon ECS<\/a>\uc5d0 <span title=\"\">Amazon Elastic Compute Cloud(EC2)<\/span> <a href=\"https:\/\/aws.amazon.com\/ec2\/instance-types\/inf1\/\">Inf1<\/a> \uc778\uc2a4\ud134\uc2a4\ub97c \ubc30\ud3ec\ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4. Inf1 \ubc30\ud3ec\uac00 \uc9c4\uc804\ub418\uba74 \ub354 \ub9ce\uc740 \ub9ac\uc804\uc758 Amazon ECS\uc5d0\uc11c \uc774 \ubc30\ud3ec\ub97c \uc0ac\uc6a9\ud560 \uc218 \uc788\uac8c \ub420 \uac83\uc785\ub2c8\ub2e4.<\/p>\n<p>\uc774 \uc778\uc2a4\ud134\uc2a4\ub97c \uc0ac\uc6a9\ud574 \ubcf4\uace0 \uae30\uc874 AWS Support \ub2f4\ub2f9\uc790, <a title=\"\" href=\"https:\/\/aws.amazon.com\/ecs\/\">Amazon ECS<\/a>\uc758 <a href=\"https:\/\/forums.aws.amazon.com\/forum.jspa?forumID=187\">AWS \ud3ec\ub7fc<\/a> \ub610\ub294 Github\uc758 <a href=\"https:\/\/github.com\/aws\/containers-roadmap\">\ucee8\ud14c\uc774\ub108 \ub85c\ub4dc\ub9f5<\/a>\uc744 \ud1b5\ud574 \ud53c\ub4dc\ubc31\uc744 \ubcf4\ub0b4\uc8fc\uc2ed\uc2dc\uc624.<\/p>\n<p><a title=\"\" href=\"https:\/\/aws.amazon.com\/developer\/community\/evangelists\/julien-simon\/\">\u2013 Julien<\/a><\/p>\n<p>Source: <a href=\"https:\/\/aws.amazon.com\/ko\/blogs\/korea\/amazon-ecs-now-supports-ec2-inf1-instances\/\" target=\"_blank\" rel=\"noopener noreferrer\">Amazon ECS\uc5d0\uc11c \uae30\uacc4 \ud559\uc2b5 \ucd94\ub860\uc744 \uc704\ud55c EC2 Inf1 \uc778\uc2a4\ud134\uc2a4 \uc815\uc2dd \uc9c0\uc6d0<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<div class=\"mh-excerpt\"><p>Amazon ECS\uc5d0\uc11c \uae30\uacc4 \ud559\uc2b5 \ucd94\ub860\uc744 \uc704\ud55c EC2 Inf1 \uc778\uc2a4\ud134\uc2a4 \uc815\uc2dd \uc9c0\uc6d0 \uae30\uacc4 \ud559\uc2b5\uacfc \ub525 \ub7ec\ub2dd \ubaa8\ub378\uc774 \ub354 \uc815\uad50\ud574\uc9d0\uc5d0 \ub530\ub77c \ub192\uc740 \ucc98\ub9ac\ub7c9\uc73c\ub85c \ube60\ub978 \uc608\uce21\uc744 \uc81c\uacf5\ud558\ub294 \ub370 \ud544\uc694\ud55c \ud558\ub4dc\uc6e8\uc5b4 \uac00\uc18d\uc758 \uc911\uc694\uc131\uc774 \uc810\uc810 \ub354 \ucee4\uc9c0\uace0 \uc788\uc2b5\ub2c8\ub2e4. \uc624\ub298\ubd80\ud130, AWS \uace0\uac1d\uc740 Amazon ECS\uc5d0\uc11c Amazon EC2 Inf1 \uc778\uc2a4\ud134\uc2a4\ub97c \uc0ac\uc6a9\ud558\uc5ec \ud074\ub77c\uc6b0\ub4dc\uc5d0\uc11c \uc131\ub2a5\uc744 \uac1c\uc120\ud558\uace0 \uc608\uce21 \ube44\uc6a9\uc744 \uc808\uac10\ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4. \uc774\ub7ec\ud55c \uc778\uc2a4\ud134\uc2a4\ub294 \uc9c0\ub09c \uba87 \uc8fc \ub3d9\uc548 Amazon Elastic Kubernetes Service\uc5d0\uc11c\ub3c4 \uc81c\uacf5\ub418\uc5c8\uc2b5\ub2c8\ub2e4. EC2 Inf1 \uc778\uc2a4\ud134\uc2a4\uc5d0 \ub300\ud55c \uae30\ubcf8 \uc815\ubcf4 Inf1 \uc778\uc2a4\ud134\uc2a4\ub294 AWS re:Invent 2019\uc5d0\uc11c \ucd9c\uc2dc\ub418\uc5c8\uc2b5\ub2c8\ub2e4. \uc774 \uc778\uc2a4\ud134\uc2a4\ub294 AWS\uac00 \uae30\uacc4 \ud559\uc2b5 \ucd94\ub860 \uc6cc\ud06c\ub85c\ub4dc\ub97c \uac00\uc18d\ud654\ud558\uae30 \uc704\ud574 \ucc98\uc74c\ubd80\ud130 \ube4c\ub4dc\ud55c \ub9de\ucda4\ud615 \uce69\uc778 AWS Inferentia\uc5d0 \uc758\ud574 \uc9c0\uc6d0\ub429\ub2c8\ub2e4. Inf1 \uc778\uc2a4\ud134\uc2a4\ub294 \ucd5c\ub300 100Gbps\uc758 \ub124\ud2b8\uc6cc\ud06c \ub300\uc5ed\ud3ed \ubc0f \ucd5c\ub300 19Gbps\uc758 EBS \ub300\uc5ed\ud3ed\uc73c\ub85c 1, 4 \ub610\ub294 16\uac1c\uc758 AWS Inferentia \uce69\uacfc \ud568\uaed8 \ub2e4\uc591\ud55c \ud06c\uae30\ub85c \uc81c\uacf5\ub429\ub2c8\ub2e4. AWS Inferentia \uce69\uc5d0\ub294 \ub124 \uac1c\uc758 NeuronCore\uac00 \ud3ec\ud568\ub418\uc5b4 \uc788\uc2b5\ub2c8\ub2e4. \uac01 \ucf54\uc5b4\ub294 \uace0\uc131\ub2a5 \uc2dc\uc2a4\ud1a8\ub9ad \ubc30\uc5f4 \ud589\ub82c \uacf1\uc148 \uc5d4\uc9c4\uc744 \uad6c\ud604\ud558\uc5ec \ucee8\ubcfc\ub8e8\uc158 \ubc0f \ud2b8\ub79c\uc2a4\ud3ec\uba38\uc640 \uac19\uc740 \uc77c\ubc18\uc801\uc778 \ub525 \ub7ec\ub2dd \uc5f0\uc0b0\uc758 \uc18d\ub3c4\ub97c \ud06c\uac8c <a class=\"mh-excerpt-more\" href=\"https:\/\/jirak.net\/wp\/amazon-ecs%ec%97%90%ec%84%9c-%ea%b8%b0%ea%b3%84-%ed%95%99%ec%8a%b5-%ec%b6%94%eb%a1%a0%ec%9d%84-%ec%9c%84%ed%95%9c-ec2-inf1-%ec%9d%b8%ec%8a%a4%ed%84%b4%ec%8a%a4-%ec%a0%95%ec%8b%9d-%ec%a7%80%ec%9b%90\/\" title=\"Amazon ECS\uc5d0\uc11c \uae30\uacc4 \ud559\uc2b5 \ucd94\ub860\uc744 \uc704\ud55c EC2 Inf1 \uc778\uc2a4\ud134\uc2a4 \uc815\uc2dd \uc9c0\uc6d0\">[ more&#8230; ]<\/a><\/p>\n<\/div>","protected":false},"author":1,"featured_media":38126,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[169],"tags":[656],"class_list":["post-38125","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-news","tag-aws"],"amp_enabled":true,"_links":{"self":[{"href":"https:\/\/jirak.net\/wp\/wp-json\/wp\/v2\/posts\/38125","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=38125"}],"version-history":[{"count":1,"href":"https:\/\/jirak.net\/wp\/wp-json\/wp\/v2\/posts\/38125\/revisions"}],"predecessor-version":[{"id":38127,"href":"https:\/\/jirak.net\/wp\/wp-json\/wp\/v2\/posts\/38125\/revisions\/38127"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/jirak.net\/wp\/wp-json\/wp\/v2\/media\/38126"}],"wp:attachment":[{"href":"https:\/\/jirak.net\/wp\/wp-json\/wp\/v2\/media?parent=38125"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/jirak.net\/wp\/wp-json\/wp\/v2\/categories?post=38125"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/jirak.net\/wp\/wp-json\/wp\/v2\/tags?post=38125"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}