åºåã¯ãªãšã€ãã£ãã¯ãçæç³» AIïŒGenerative AI, GenAIïŒã«ãã£ãŠé©åœãèµ·ããå¯èœæ§ãç§ããŠããŸãã çæç³» AI ã¢ãã«ãåãã¬ãŒãã³ã°ããããã¹ãããã³ãã (ã¢ãã«ã«ãã£ãŠçæãããã·ãŒã³ããªããžã§ã¯ãã説æããæ) ãªã©ã®ããã€ãã®å
¥åãã¢ãã«ã«äžããããšã§ã補åç»åãªã©ããŸããŸãªçš®é¡ã®æ¬æ°ãªç»åãäœæã§ããããã«ãªããŸããã ãã®ææ³ã¯ã2022 幎ãã Stable Diffusion ã Midjourney ã Dall-E-2 ãªã©ã®æœå𿡿£ã¢ãã« (Latent Diffusion Model) ãšåŒã°ããæ°ããã¯ã©ã¹ã®åºç€ã¢ãã«ïŒFoundation Model, FMïŒã®ççºçå¢å ã«ãã£ãŠææãªçµæã瀺ããŠããŸãã ãã ãããããã®ã¢ãã«ãæ¬çªç°å¢ã§äœ¿çšããã«ã¯ãçæããã»ã¹ãç¶ç¶çã«æ¹è¯ããŠäžè²«ããåºåãçæããå¿
èŠããããŸãã å€ãã®å Žåã補åã®ãµã³ãã«ç»åã倧éã«äœæããå·§åŠã§è¿
éãªãšã³ãžãã¢ãªã³ã°ãè¡ãå¿
èŠããããããå€§èŠæš¡ãªäœæ¥ã¯å°é£ã«ãªããŸãã ãã®èšäºã§ã¯ãç¹ã«å€§éã®ç»åãæ±ãå Žåã«ããã®é©æ°çãªãã¯ãããžãŒã掻çšããŠãé
åçã§é©æ°çãªåºåãå€§èŠæš¡ã«çæããæ¹æ³ã«ã€ããŠæš¡çŽ¢ããŸããçæç³» AI ã®åãç¹ã«ã€ã³ãã€ã³ãã£ã³ã°æè¡ãå©çšããããšã§ãç»åã®èæ¯ãã·ãŒã ã¬ã¹ã«äœæã§ããèŠèŠçã«çŸããé
åçãªã³ã³ãã³ããäœæã§ããïŒã¢ãã«ãã«ã·ããŒã·ã§ã³ãšåŒã°ããïŒæãŸãããªãç»åã¢ãŒãã£ãã¡ã¯ããæžããããšãã§ããŸãã ãŸãã Amazon SageMaker ãšã³ããã€ã³ããæŽ»çšããŠããã®ææ³ã®å®çšçãªå®è£
ã«ã€ããŠã詳ãã説æããŸããããã«ããããã®åµé çãªããã»ã¹ãæšé²ããçæç³» AI ã¢ãã«ã®å¹ççãªãããã€ãå¯èœã«ãªããŸãã çæç³» AI ããŒã¹ã®ç»åçæã§ã¯ãç»åå
ã®æ¬ èœããŠããèŠçŽ ã眮ãæããããã®åŒ·åãªãœãªã¥ãŒã·ã§ã³ã§ãããã€ã³ãã€ã³ãã£ã³ã°ãéèŠãªãã¯ããã¯ãšããŠæ¡çšããŠããŸãã ãã ããããã«ã¯ããã€ãã®èª²é¡ããããŸãã ããšãã°ãç»åå
ã®ãªããžã§ã¯ãã®äœçœ®ãæ£ç¢ºã«ã³ã³ãããŒã«ããããšã¯å¶éããããããæ¬¡ã®ç»åäŸã«ç€ºããããªçæããç»åèªäœã®åé¡ãããªããžã§ã¯ãã®æµ®ãäžãããå¢çãã·ãŒã ã¬ã¹ã«èåããŠããªããªã©ã®åé¡ãçºçããå¯èœæ§ããããŸãã ãã®åé¡ã«å¯ŸåŠããããã«ããã®èšäºã§ã¯æäœéã®æç€ºã§å€æ°ã®ãªã¢ã«ãªç»åãçæããåµé ã®èªç±ãšå¶äœã«ãããå¹çæ§ã®ãã©ã³ã¹ããšãããšãææ¡ããŸãã ææ¡ããããœãªã¥ãŒã·ã§ã³ãæ¬çªç°å¢åãã«æ¡åŒµããAWS ç°å¢ãžã® AI ã¢ãã«ã®ãããã€ãå¹çåããããã«ãSageMaker ãšã³ããã€ã³ãã䜿çšããŠãã¢ãè¡ããŸãã ç¹ã«ãã€ã³ãã€ã³ãã£ã³ã°åŠçãã¬ã€ã€ãŒã®ã»ãããšããŠåå²ããŸãããã®åã¬ã€ã€ãŒã¯ç°ãªãããã³ããã®ã»ãããæã€ããšããããŸãã ãã®ããã»ã¹ã¯ã以äžã®ã¹ãããã«èŠçŽã§ããŸãã ãŸããäžè¬çãªã·ãŒã³ã®ããã³ãã (ããšãã°ãåŸãã«æšãããå
¬åããªã©) ãå
¥åããŠèæ¯ç»åãçæãããã®èæ¯ã«ãªããžã§ã¯ããã©ã³ãã ã«é
眮ããŸãã æ¬¡ã«ããªããžã§ã¯ãã眮ãå Žæãããã³ããïŒããšãã°ãèçã®äžã§ã®ãã¯ããã¯ãããæšè£œã®ããŒãã«ããªã©ïŒã§æç€ºãããªããžã§ã¯ãã®äžå€®äžéšããäžã®éšåã«ã¬ã€ã€ãŒã远å ããŸãã æåŸã«ãèæ¯ãšåãããã³ããã䜿çšããŠããªããžã§ã¯ãã®äžå€®äžéšããäžã®éšåã«èæ¯ã¬ã€ã€ãŒã«äŒŒãã¬ã€ã€ãŒã远å ããŸãã ãã®ããã»ã¹ã®å©ç¹ã¯ãèæ¯ã«å¯ŸããŠäººéã®æåŸ
ã«æ²¿ã£ãæ¡å€§çž®å°ãé
眮ãè§£éããããããªããžã§ã¯ãã®ãªã¢ãªãã£ãåäžããããšã§ãã æ¬¡ã®å³ã¯ãææ¡ããããœãªã¥ãŒã·ã§ã³ã®æé ã瀺ããŠããŸãã ãœãªã¥ãŒã·ã§ã³æŠèŠ ãããã®ã¿ã¹ã¯ãå®è¡ããã«ã¯ã次ã®ããŒã¿ãããŒãèããããŸãã Segment Anything Model (SAM) ãš Stable Diffusion ã€ã³ãã€ã³ãã£ã³ã° ã¢ãã«ã¯ SageMaker ãšã³ããã€ã³ã ã«ãã¹ããããŸãã èæ¯ããã³ãã (Background Prompt) ã䜿çšããŠãStable Diffusion ã¢ãã«ã䜿çšããŠèæ¯ç»å (Generated Background Image) ãçæããŸãã åºæ¬ãšãªãååç»å (Base Product Image) ã SAM ãä»ããŠæž¡ãããã¹ã¯ç»å (Mask) ãçæãããŸãã ãã¹ã¯ç»åã®éã¯ã¢ã³ããã¹ã¯ç»å (Anti-Mask) ãšåŒã°ããŸãã çæãããèæ¯ç»åãšãã¹ã¯ç»åãã忝çšã®ããã³ãã (Foreground Prompt) ãšãã¬ãã£ãããã³ãã (Negative Prompt) ãšäžç·ã« Stable Diffusion ã€ã³ãã€ã³ãã£ã³ã°ã¢ãã«ãžã®å
¥åãšããŠäœ¿çšãããäžéçæç©ãšããŠã®èæ¯ç»å (Generated Intermediate Background Image) ãçæãããŸãã åæ§ã«ãçæãããèæ¯ç»åãã¢ã³ããã¹ã¯ç»åã忝çšã®ããã³ããããã¬ãã£ãããã³ããã Stable Diffusion Inpainting ã¢ãã«ãžã®å
¥åãšããŠäœ¿çšãããäžéçæç©ãšããŠã®åæ¯ç»å (Generated Intermediate Foreground Image) ãçæãããŸãã æçµçã«çæãããååç»åã®åºåçµæ (Generated Product Image) ã¯ãçæãããäžéã®åæ¯ç»åãšçæãããäžéã®èæ¯ç»åãçµã¿åãããããšã«ãã£ãŠåŸãããŸãã åææ¡ä»¶ ãšã³ããã€ã³ãã®ãããã€ãšæšè«ã®å®è¡ã«äœ¿çšãã SageMaker ããŒããã㯠ãäœæãã AWS CloudFormation ãã³ãã¬ãŒããéçºããŠããŸãã 以äžã«ã¢ã¯ã»ã¹ã§ãã AWS Identity and Access Management (IAM) ããŒã«ãæã€ AWS ã¢ã«ãŠã³ããå¿
èŠã§ãã AWS CloudFormation SageMaker SageMaker ãšã³ããã€ã³ãã«ã¯ ML ã¢ãã«ãå®è¡ããã€ã³ã¹ã¿ã³ã¹ãæäŸãããŠããŸãããçæç³» AI ã¢ãã«ã®ãããªè² è·ã®é«ãã¯ãŒã¯ããŒããå®è¡ããã«ã¯ãGPU 察å¿ã® SageMaker ãšã³ããã€ã³ãã䜿çšããŸãã äŸ¡æ Œã®è©³çްã«ã€ããŠã¯ã Amazon SageMaker ã®æé ãåç
§ããŠãã ããã ã¢ãã«ã®ãã¹ãã«ã¯ NVIDIA A10G 察å¿ã® ml.g5.2xlarge ã€ã³ã¹ã¿ã³ã¹ã䜿çšããŠããŸãã Amazon Simple Storage Service (Amazon S3) 詳现ã«ã€ããŠã¯ã GitHub ã¬ããžã㪠㚠CloudFormation ãã³ãã¬ãŒã ãã確èªãã ããã 補åã®å¯Ÿè±¡é åããã¹ã¯ãã äžè¬çã«ã¯ãé
眮ããããªããžã§ã¯ãã®ç»åãšããªããžã§ã¯ãã®èŒªéãæãããã¹ã¯ãçšæããå¿
èŠããããŸãã ãã㯠Amazon SageMaker Ground Truth ãªã©ã®ããŒã«ã䜿çšããŠè¡ãããšãã§ããŸãããããã¯ããªããžã§ã¯ããç»åã®çãäžã«ãããšä»®å®ããã°ãSegment Anything ModelsïŒSAMïŒãªã©ã® AI ããŒã«ã䜿çšããŠãªããžã§ã¯ããèªåçã«ã»ã°ã¡ã³ãåããããšãã§ããŸãã SAM ã䜿çšããŠãã¹ã¯ç»åãçæãã é«åºŠãªçæç³» AI æè¡ã§ãã SAM ã䜿çšãããšãç»åå
ã®ããŸããŸãªãªããžã§ã¯ãã«é«å質ã®ãã¹ã¯ç»åãç°¡åã«çæã§ããŸãã SAM ã¯ãåºç¯ãªããŒã¿ã»ããã§ãã¬ãŒãã³ã°ãããæ·±å±€åŠç¿ã®ã¢ãã«ã䜿çšããŠã察象ãªããžã§ã¯ããæ£ç¢ºã«èå¥ããŠã»ã°ã¡ã³ãåããæ£ç¢ºãªå¢çãšãã¯ã»ã«ã¬ãã«ã®ãã¹ã¯ç»åãæäŸããŸãã ãã®ç»æçãªãã¯ãããžãŒã¯ãæäœæ¥ã§ãã¹ã¯ç»åãäœæãããšããæéãšåŽåã®ãããäœæ¥ãèªååããããšã§ãç»ååŠçã®ã¯ãŒã¯ãããŒã驿°ããŸãã SAM ã«ãããäŒæ¥ãå人ã¯ãªããžã§ã¯ãèªèãç»åç·šéãã³ã³ãã¥ãŒã¿ãŒããžã§ã³ã¿ã¹ã¯ãªã©ã®ããã®ãã¹ã¯ç»åãè¿
éã«çæã§ããããã«ãªããèŠèŠçãªåæãšæäœã®å¯èœæ§ãåºãããŸãã SAM ã¢ãã«ã SageMaker ãšã³ããã€ã³ãã§ãã¹ããã ããŒããã㯠1_HostGenaiModels.ipynb ã䜿çšã㊠SageMaker ãšã³ããã€ã³ããäœæããSAM ã¢ãã«ããã¹ãããŸãã inference_sam.py å
ã®æšè«ã³ãŒãã䜿çšããããã code.tar.gz ãã¡ã€ã«ã«ããã±ãŒãžåããããã䜿çšã㊠SageMaker ãšã³ããã€ã³ããäœæããŸãã ãã®ã³ãŒã㯠SAM ã¢ãã«ãããŠã³ããŒããããšã³ããã€ã³ãã«ãã¹ãããæšè«ãå®è¡ããŠåºåãçæããããã®ãšã³ããªãã€ã³ããæäŸããŸãã SAM_ENDPOINT_NAME = 'sam-pytorch-' + str(datetime.utcnow().strftime('%Y-%m-%d-%H-%M-%S-%f')) prefix_sam = "SAM/demo-custom-endpoint" model_data_sam = s3.S3Uploader.upload("code.tar.gz", f's3://{bucket}/{prefix_sam}') model_sam = PyTorchModel(entry_point='inference_sam.py', model_data=model_data_sam, framework_version='1.12', py_version='py38', role=role, env={'TS_MAX_RESPONSE_SIZE':'2000000000', 'SAGEMAKER_MODEL_SERVER_TIMEOUT' : '300'}, sagemaker_session=sess, name='model-'+SAM_ENDPOINT_NAME) predictor_sam = model_sam.deploy(initial_instance_count=1, instance_type=INSTANCE_TYPE, deserializers=JSONDeserializer(), endpoint_name=SAM_ENDPOINT_NAME) SAM ã¢ãã«ãåŒã³åºããŠãã¹ã¯ç»åãçæãã æ¬¡ã®ã³ãŒã㯠2_GenerateInPaintingImages.ipynb ããŒãããã¯ã®äžéšã§ããšã³ããã€ã³ããå®è¡ããŠçµæãçæããããã«äœ¿çšãããŸãã raw_image = Image.open("images/speaker.png").convert("RGB") predictor_sam = PyTorchPredictor(endpoint_name=SAM_ENDPOINT_NAME, deserializer=JSONDeserializer()) output_array = predictor_sam.predict(raw_image, initial_args={'Accept': 'application/json'}) mask_image = Image.fromarray(np.array(output_array).astype(np.uint8)) # save the mask image using PIL Image mask_image.save('images/speaker_mask.png') 次ã®å³ã¯ã補åç»åããååŸãããã¹ã¯ç»åã瀺ããŠããŸãã ã€ã³ãã€ã³ãã£ã³ã°ã䜿çšããŠç»åãçæãã SAM ã«ãã£ãŠçæããããã¹ã¯ç»åã䜿ã£ãã€ã³ãã€ã³ãã£ã³ã°ã®åãšããŠãŒã¶ãŒã®ããã³ãããçµã¿åãããããšã§ãçŽ æŽãããçæç»åãäœæã§ããŸãã ã€ã³ãã€ã³ãã£ã³ã°ã¯é«åºŠãªçæç³» AI æè¡ãå©çšããŠãç»åã®æ¬ ããŠããéšåããã¹ã¯ç»åãããŠããéšåãã€ã³ããªãžã§ã³ãã«åããåšå²ã®ã³ã³ãã³ããšã·ãŒã ã¬ã¹ã«èåããŸãã SAM ãçæãããã¹ã¯ç»åãã¬ã€ãã³ã¹ãšãããŠãŒã¶ãŒã®ããã³ãããã¯ãªãšã€ãã£ããªå
¥åãšããŠäœ¿çšããããšã§ãã€ã³ãã€ã³ãã£ã³ã°ã¢ã«ãŽãªãºã ã¯èŠèŠçã«äžè²«ããæèã«é©ããã³ã³ãã³ããçæãããšãŠãçŸããããŒãœãã©ã€ãºãããç»åãäœæã§ããŸãã ãã®ãã¯ãããžãŒã®èåã«ãããã¯ãªãšã€ãã£ããªå¯èœæ§ãç¡éã«åºããããŠãŒã¶ãŒã¯èªåã®ããžã§ã³ãé®®ããã§é
åçãªããžã¥ã¢ã«ã¹ããŒãªãŒã«å€ããããšãã§ããŸãã SageMaker ãšã³ããã€ã³ãã§ Stable Diffusion ã®ã€ã³ãã€ã³ãã£ã³ã°ã¢ãã«ããã¹ããã 2.1 ãšåæ§ã«ãããŒããã㯠1_HostGenaiModels.ipynb ã䜿çšã㊠SageMaker ãšã³ããã€ã³ããäœæããStable Diffusion ã®ã€ã³ãã€ã³ãã£ã³ã°ã¢ãã«ããã¹ãããŠããŸãã inference_inpainting.py å
ã®æšè«ã³ãŒãã䜿çšããããã code.tar.gz ãã¡ã€ã«ã«ããã±ãŒãžåããããã䜿çšã㊠SageMaker ãšã³ããã€ã³ããäœæããŸãã ãã®ã³ãŒã㯠Stable Diffusion ã€ã³ãã€ã³ãã£ã³ã°ã¢ãã«ãããŠã³ããŒããããšã³ããã€ã³ãã§ãã¹ãããæšè«ãå®è¡ããŠåºåãçæããããã®ãšã³ããªãã€ã³ããæäŸããŸãã INPAINTING_ENDPOINT_NAME = 'inpainting-pytorch-' + str(datetime.utcnow().strftime('%Y-%m-%d-%H-%M-%S-%f')) prefix_inpainting = "InPainting/demo-custom-endpoint" model_data_inpainting = s3.S3Uploader.upload("code.tar.gz", f"s3://{bucket}/{prefix_inpainting}") model_inpainting = PyTorchModel(entry_point='inference_inpainting.py', model_data=model_data_inpainting, framework_version='1.12', py_version='py38', role=role, env={'TS_MAX_RESPONSE_SIZE':'2000000000', 'SAGEMAKER_MODEL_SERVER_TIMEOUT' : '300'}, sagemaker_session=sess, name='model-'+INPAINTING_ENDPOINT_NAME) predictor_inpainting = model_inpainting.deploy(initial_instance_count=1, instance_type=INSTANCE_TYPE, serializer=JSONSerializer(), deserializers=JSONDeserializer(), endpoint_name=INPAINTING_ENDPOINT_NAME, volume_size=128) Stable Diffusion ã®ã€ã³ãã€ã³ãã£ã³ã°ã¢ãã«ãåŒã³åºããæ°ããç»åãçæãã SAM ã¢ãã«ãåŒã³åºãæé ãšåæ§ã«ãããŒãããã¯ã® 2_generateInPaintingImages.ipynb ã䜿çšããŠãšã³ããã€ã³ãã§æšè«ãå®è¡ããçµæãçæããŸãã raw_image = Image.open("images/speaker.png").convert("RGB") mask_image = Image.open('images/speaker_mask.png').convert('RGB') prompt_fr = "table and chair with books" prompt_bg = "window and couch, table" negative_prompt = "longbody, lowres, bad anatomy, bad hands, missing fingers, extra digit, fewer digits, cropped, worst quality, low quality, letters" inputs = {} inputs["image"] = np.array(raw_image) inputs["mask"] = np.array(mask_image) inputs["prompt_fr"] = prompt_fr inputs["prompt_bg"] = prompt_bg inputs["negative_prompt"] = negative_prompt predictor_inpainting = PyTorchPredictor(endpoint_name=INPAINTING_ENDPOINT_NAME, serializer=JSONSerializer(), deserializer=JSONDeserializer()) output_array = predictor_inpainting.predict(inputs, initial_args={'Accept': 'application/json'}) gai_image = Image.fromarray(np.array(output_array[0]).astype(np.uint8)) gai_background = Image.fromarray(np.array(output_array[1]).astype(np.uint8)) gai_mask = Image.fromarray(np.array(output_array[2]).astype(np.uint8)) post_image = Image.fromarray(np.array(output_array[3]).astype(np.uint8)) # save the generated image using PIL Image post_image.save('images/speaker_generated.png') 次ã®å³ã¯ã調æŽããããã¹ã¯ç»åãçæãããèæ¯ç»åãçæããã補åç»åãããã³åŸåŠçåŸã®ç»åã瀺ããŠããŸãã çæãããååç»åã¯ã次ã®ããã³ããã䜿çšããŸãã èæ¯çæ â âchair, couch, window, indoorâïŒæ¥æ¬èªèš³ïŒãæ€
åããœãã¡ãçªãå±å
ãïŒ ã€ã³ãã€ã³ãã£ã³ã° â âbesides booksâïŒæ¥æ¬èªèš³ïŒãæ¬ä»¥å€ãïŒ ã¯ãªãŒã³ã¢ãã ãã®èšäºã§ã¯ãã³ã¹ãã®å€§éšåãå ãã 2 ã€ã® GPU 察å¿ã® SageMaker ãšã³ããã€ã³ãã䜿çšããŸãã ãããã®ãšã³ããã€ã³ãã¯ã䜿çšããŠããªããšãã«äœåãªã³ã¹ããããããªãããã«ããªãã«ããå¿
èŠããããŸãããšã³ããã€ã³ãã®ã¯ãªãŒã³ã¢ããã«åœ¹ç«ã€ããŒããã㯠3_CleanUp.ipynb ãçšæããŠããŸãã ãŸããSageMaker ããŒãããã¯ã䜿çšããŠã¢ãã«ããã¹ãããæšè«ãå®è¡ããŸãã ãã®ãããããŒãããã¯ã€ã³ã¹ã¿ã³ã¹ã䜿çšãããŠããªãå Žåã¯åæ¢ããããšããå§ãããŸãã ãŸãšã çæç³» AI ã¢ãã«ã¯éåžžãå¹ççã«å®è¡ããã«ã¯ç¹å®ã®ãªãœãŒã¹ãå¿
èŠãšããå€§èŠæš¡ãª ML ã¢ãã«ã§ãã ãã®æçš¿ã§ã¯ãåºåã®ãŠãŒã¹ã±ãŒã¹ã䜿çšããŠãSageMakerãšã³ããã€ã³ãããããã¹ãããç»åãžã®åºç€ã¢ãã«ã§ãã Stable Diffusion ãªã©ã®çæç³» AI ã¢ãã«ããã¹ãããããã®ã¹ã±ãŒã©ãã«ã§ç®¡çãããç°å¢ãæäŸããæ¹æ³ã説æããŸããã 2 ã€ã®ã¢ãã«ããã¹ãããŠå¿
èŠã«å¿ããŠå®è¡ããæ¹æ³ãšã 1 ã€ã®ãšã³ããã€ã³ãããè€æ°ã®ã¢ãã«ããã¹ããã æ¹æ³ã説æããŸããã ããã«ãããã€ã³ãã©ã¹ãã©ã¯ãã£ã®ããããžã§ãã³ã°ãã¹ã±ãŒã©ããªãã£ãç£èŠã«é¢é£ããè€éããè§£æ¶ãããçµç¹ã¯ã¢ãã«ã®å°å
¥ãšäºæž¬ã®æäŸã ãã«éäžããŠããžãã¹äžã®èª²é¡ã解決ã§ããŸãã SageMaker ãšã³ããã€ã³ãã䜿çšãããšãçµç¹ã¯çµ±äžãããã€ã³ãã©ã¹ãã©ã¯ãã£å
ã§è€æ°ã®ã¢ãã«ãå¹ççã«å±éããã³ç®¡çã§ãããããæé©ãªãªãœãŒã¹å©çšãå®çŸããéçšã®ãªãŒããŒããããåæžã§ããŸãã 詳现ãªã³ãŒã㯠GitHub ã§å
¬éãããŠããŸãã ãã®ã³ãŒãã§ã¯ãAWS CloudFormation ãš AWS Cloud Development Kit (AWS CDK) ã䜿çšã㊠SageMaker ããŒãããã¯ããã®ä»ã®å¿
èŠãªãªãœãŒã¹ãäœæããããã»ã¹ãèªååããæ¹æ³ã瀺ããŠããŸãã èè
ã«ã€ã㊠Fabian Benitez-Quiroz 㯠AWS ãããã§ãã·ã§ãã«ãµãŒãã¹ã® IoT ãšããžããŒã¿ãµã€ãšã³ãã£ã¹ãã§ãã ãªãã€ãªå·ç«å€§åŠã§ã³ã³ãã¥ãŒã¿ãŒããžã§ã³ãšãã¿ãŒã³èªèã®å士å·ãååŸããŠããŸãã Fabian ã¯ãããŸããŸãªæ¥çã®ã客æ§ã IoT ããã€ã¹ãã¯ã©ãŠãäžã§äœã¬ã€ãã³ã·ãŒã§æ©æ¢°åŠç¿ã¢ãã«ãå®è¡ã§ããããæ¯æŽããŠããŸãã Romil Shah 㯠AWS ãããã§ãã·ã§ãã«ãµãŒãã¹ã®ã·ãã¢ããŒã¿ãµã€ãšã³ãã£ã¹ãã§ãã Romilã¯ãã³ã³ãã¥ãŒã¿ãŒããžã§ã³ãæ©æ¢°åŠç¿ãIoT ãšããžããã€ã¹ã«ãããŠ6幎以äžã®æ¥ççµéšããããŸãã 圌ã¯ã顧客ããšããžããã€ã¹ãã¯ã©ãŠãåãã«æ©æ¢°åŠç¿ã¢ãã«ãæé©åããŠå±éã§ããããæ¯æŽããŠããŸãã 顧客ãšååããŠãåºç€ã¢ãã«ãæé©åããã³å±éããããã®æŠç¥ãçå®ããŠããŸãã Han Man ã¯ãã«ãªãã©ã«ãã¢å·ãµã³ãã£ãšãŽãæ ç¹ãšãã AWS ãããã§ãã·ã§ãã«ãµãŒãã¹ã®ã·ãã¢ããŒã¿ãµã€ãšã³ã¹ããã³æ©æ¢°åŠç¿ãããŒãžã£ãŒã§ãã ããŒã¹ãŠã§ã¹ã¿ã³å€§åŠã§å·¥åŠã®å士å·ãååŸããçµå¶ã³ã³ãµã«ã¿ã³ããšããŠè£œé ããã¡ã€ãã³ã¹ãµãŒãã¹ããšãã«ã®ãŒã®åéã§ã¯ã©ã€ã¢ã³ãã«ã¢ããã€ã¹ãæäŸããçµéšãæ°å¹ŽãããŸãã çŸåšã圌ã¯ããŸããŸãªæ¥çš®ã®äž»èŠé¡§å®¢ãšç±å¿ã«ååããŠãAWS ã§ ML ãšçæç³»ãœãªã¥ãŒã·ã§ã³ãéçºããã³å®è£
ããŠããŸãã 翻蚳ã¯ãœãªã¥ãŒã·ã§ã³ã¢ãŒããã¯ãã®ææãæ
åœããŸãããåæã¯ ãã¡ã ã§ãã