{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "## Use BentoML with ONNX model zoo(resnet50)\n", "\n", "**BentoML makes moving trained ML models to production easy:**\n", "\n", "* Package models trained with **any ML framework** and reproduce them for model serving in production\n", "* **Deploy anywhere** for online API serving or offline batch serving\n", "* High-Performance API model server with *adaptive micro-batching* support\n", "* Central hub for managing models and deployment process via Web UI and APIs\n", "* Modular and flexible design making it *adaptable to your infrastrcuture*\n", "\n", "BentoML is a framework for serving, managing, and deploying machine learning models. It is aiming to bridge the gap between Data Science and DevOps, and enable teams to deliver prediction services in a fast, repeatable, and scalable way.\n", "\n", "Before reading this example project, be sure to check out the [Getting started guide](https://github.com/bentoml/BentoML/blob/master/guides/quick-start/bentoml-quick-start-guide.ipynb) to learn about the basic concepts in BentoML.\n", "\n", "This example notebook demonstrates how to use ONNX model zoo with BentoML. It defines a BentoService with `resnet50` model and deploys it to AWS sagemaker as an API endpoint.\n", "\n", "original notebook: https://github.com/onnx/onnx-docker/blob/master/onnx-ecosystem/inference_demos/resnet50_modelzoo_onnxruntime_inference.ipynb\n", "\n", "\n", "![Impression](https://www.google-analytics.com/collect?v=1&tid=UA-112879361-3&cid=555&t=event&ec=onnx&ea=onnx-resnet50&dt=onnx-resnet50)" ] }, { "cell_type": "code", "execution_count": 1, "metadata": {}, "outputs": [], "source": [ "%reload_ext autoreload\n", "%autoreload 2\n", "%matplotlib inline" ] }, { "cell_type": "code", "execution_count": 3, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Requirement already satisfied: onnx in /opt/anaconda3/lib/python3.7/site-packages (1.7.0)\n", "Requirement already satisfied: onnxruntime in /opt/anaconda3/lib/python3.7/site-packages (1.4.0)\n", "Requirement already satisfied: typing-extensions>=3.6.2.1 in /opt/anaconda3/lib/python3.7/site-packages (from onnx) (3.7.4.2)\n", "Requirement already satisfied: six in /opt/anaconda3/lib/python3.7/site-packages (from onnx) (1.15.0)\n", "Requirement already satisfied: protobuf in /opt/anaconda3/lib/python3.7/site-packages (from onnx) (3.11.3)\n", "Requirement already satisfied: numpy in /opt/anaconda3/lib/python3.7/site-packages (from onnx) (1.18.5)\n", "Requirement already satisfied: setuptools in /opt/anaconda3/lib/python3.7/site-packages (from protobuf->onnx) (49.1.0.post20200710)\n" ] } ], "source": [ "!pip install -q bentoml onnx>=1.7.0 onnxruntime>=1.4.0" ] }, { "cell_type": "code", "execution_count": 5, "metadata": {}, "outputs": [], "source": [ "import numpy as np # we're going to use numpy to process input and output data\n", "import onnxruntime # to inference ONNX models, we use the ONNX Runtime\n", "import onnx\n", "from onnx import numpy_helper\n", "import urllib.request\n", "import json\n", "import time\n", "\n", "# display images in notebook\n", "import matplotlib.pyplot as plt\n", "from PIL import Image, ImageDraw, ImageFont\n", "\n", "%matplotlib inline" ] }, { "cell_type": "code", "execution_count": 3, "metadata": { "scrolled": true }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ " % Total % Received % Xferd Average Speed Time Time Time Current\n", " Dload Upload Total Spent Left Speed\n", "100 21240 100 21240 0 0 59830 0 --:--:-- --:--:-- --:--:-- 59662\n", "x resnet50v2/\n", "x resnet50v2/resnet50v2.onnx\n", "x resnet50v2/test_data_set_0/\n", "x resnet50v2/test_data_set_1/\n", "x resnet50v2/test_data_set_2/\n", "x resnet50v2/test_data_set_2/input_0.pb\n", "x resnet50v2/test_data_set_2/output_0.pb\n", "x resnet50v2/test_data_set_1/input_0.pb\n", "x resnet50v2/test_data_set_1/output_0.pb\n", "x resnet50v2/test_data_set_0/input_0.pb\n", "x resnet50v2/test_data_set_0/output_0.pb\n" ] } ], "source": [ "onnx_model_url = \"https://s3.amazonaws.com/onnx-model-zoo/resnet/resnet50v2/resnet50v2.tar.gz\"\n", "imagenet_labels_url = \"https://raw.githubusercontent.com/anishathalye/imagenet-simple-labels/master/imagenet-simple-labels.json\"\n", "\n", "# retrieve our model from the ONNX model zoo\n", "urllib.request.urlretrieve(onnx_model_url, filename=\"resnet50v2.tar.gz\")\n", "urllib.request.urlretrieve(imagenet_labels_url, filename=\"imagenet-simple-labels.json\")\n", "\n", "!curl https://raw.githubusercontent.com/onnx/onnx-docker/master/onnx-ecosystem/inference_demos/images/dog.jpg -o dog.jpg\n", "!tar xvzf resnet50v2.tar.gz" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Load sample outputs and inputs" ] }, { "cell_type": "code", "execution_count": 4, "metadata": {}, "outputs": [], "source": [ "test_data_dir = 'resnet50v2/test_data_set'\n", "test_data_num = 3" ] }, { "cell_type": "code", "execution_count": 5, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Loaded 3 inputs successfully.\n", "Loaded 3 reference outputs successfully.\n" ] } ], "source": [ "import glob\n", "import os\n", "\n", "# Load inputs\n", "inputs = []\n", "for i in range(test_data_num):\n", " input_file = os.path.join(test_data_dir + '_{}'.format(i), 'input_0.pb')\n", " tensor = onnx.TensorProto()\n", " with open(input_file, 'rb') as f:\n", " tensor.ParseFromString(f.read())\n", " inputs.append(numpy_helper.to_array(tensor))\n", "\n", "print('Loaded {} inputs successfully.'.format(test_data_num))\n", " \n", "# Load reference outputs\n", "\n", "ref_outputs = []\n", "for i in range(test_data_num):\n", " output_file = os.path.join(test_data_dir + '_{}'.format(i), 'output_0.pb')\n", " tensor = onnx.TensorProto()\n", " with open(output_file, 'rb') as f:\n", " tensor.ParseFromString(f.read()) \n", " ref_outputs.append(numpy_helper.to_array(tensor))\n", " \n", "print('Loaded {} reference outputs successfully.'.format(test_data_num))" ] }, { "cell_type": "code", "execution_count": 6, "metadata": { "scrolled": true }, "outputs": [ { "data": { "text/plain": [ "array(['tench', 'goldfish', 'great white shark', 'tiger shark',\n", " 'hammerhead shark', 'electric ray', 'stingray', 'cock', 'hen',\n", " 'ostrich', 'brambling', 'goldfinch', 'house finch', 'junco',\n", " 'indigo bunting', 'American robin', 'bulbul', 'jay', 'magpie',\n", " 'chickadee', 'American dipper', 'kite', 'bald eagle', 'vulture',\n", " 'great grey owl', 'fire salamander', 'smooth newt', 'newt',\n", " 'spotted salamander', 'axolotl', 'American bullfrog', 'tree frog',\n", " 'tailed frog', 'loggerhead sea turtle', 'leatherback sea turtle',\n", " 'mud turtle', 'terrapin', 'box turtle', 'banded gecko',\n", " 'green iguana', 'Carolina anole',\n", " 'desert grassland whiptail lizard', 'agama',\n", " 'frilled-necked lizard', 'alligator lizard', 'Gila monster',\n", " 'European green lizard', 'chameleon', 'Komodo dragon',\n", " 'Nile crocodile', 'American alligator', 'triceratops',\n", " 'worm snake', 'ring-necked snake', 'eastern hog-nosed snake',\n", " 'smooth green snake', 'kingsnake', 'garter snake', 'water snake',\n", " 'vine snake', 'night snake', 'boa constrictor',\n", " 'African rock python', 'Indian cobra', 'green mamba', 'sea snake',\n", " 'Saharan horned viper', 'eastern diamondback rattlesnake',\n", " 'sidewinder', 'trilobite', 'harvestman', 'scorpion',\n", " 'yellow garden spider', 'barn spider', 'European garden spider',\n", " 'southern black widow', 'tarantula', 'wolf spider', 'tick',\n", " 'centipede', 'black grouse', 'ptarmigan', 'ruffed grouse',\n", " 'prairie grouse', 'peacock', 'quail', 'partridge', 'grey parrot',\n", " 'macaw', 'sulphur-crested cockatoo', 'lorikeet', 'coucal',\n", " 'bee eater', 'hornbill', 'hummingbird', 'jacamar', 'toucan',\n", " 'duck', 'red-breasted merganser', 'goose', 'black swan', 'tusker',\n", " 'echidna', 'platypus', 'wallaby', 'koala', 'wombat', 'jellyfish',\n", " 'sea anemone', 'brain coral', 'flatworm', 'nematode', 'conch',\n", " 'snail', 'slug', 'sea slug', 'chiton', 'chambered nautilus',\n", " 'Dungeness crab', 'rock crab', 'fiddler crab', 'red king crab',\n", " 'American lobster', 'spiny lobster', 'crayfish', 'hermit crab',\n", " 'isopod', 'white stork', 'black stork', 'spoonbill', 'flamingo',\n", " 'little blue heron', 'great egret', 'bittern', 'crane (bird)',\n", " 'limpkin', 'common gallinule', 'American coot', 'bustard',\n", " 'ruddy turnstone', 'dunlin', 'common redshank', 'dowitcher',\n", " 'oystercatcher', 'pelican', 'king penguin', 'albatross',\n", " 'grey whale', 'killer whale', 'dugong', 'sea lion', 'Chihuahua',\n", " 'Japanese Chin', 'Maltese', 'Pekingese', 'Shih Tzu',\n", " 'King Charles Spaniel', 'Papillon', 'toy terrier',\n", " 'Rhodesian Ridgeback', 'Afghan Hound', 'Basset Hound', 'Beagle',\n", " 'Bloodhound', 'Bluetick Coonhound', 'Black and Tan Coonhound',\n", " 'Treeing Walker Coonhound', 'English foxhound',\n", " 'Redbone Coonhound', 'borzoi', 'Irish Wolfhound',\n", " 'Italian Greyhound', 'Whippet', 'Ibizan Hound',\n", " 'Norwegian Elkhound', 'Otterhound', 'Saluki', 'Scottish Deerhound',\n", " 'Weimaraner', 'Staffordshire Bull Terrier',\n", " 'American Staffordshire Terrier', 'Bedlington Terrier',\n", " 'Border Terrier', 'Kerry Blue Terrier', 'Irish Terrier',\n", " 'Norfolk Terrier', 'Norwich Terrier', 'Yorkshire Terrier',\n", " 'Wire Fox Terrier', 'Lakeland Terrier', 'Sealyham Terrier',\n", " 'Airedale Terrier', 'Cairn Terrier', 'Australian Terrier',\n", " 'Dandie Dinmont Terrier', 'Boston Terrier', 'Miniature Schnauzer',\n", " 'Giant Schnauzer', 'Standard Schnauzer', 'Scottish Terrier',\n", " 'Tibetan Terrier', 'Australian Silky Terrier',\n", " 'Soft-coated Wheaten Terrier', 'West Highland White Terrier',\n", " 'Lhasa Apso', 'Flat-Coated Retriever', 'Curly-coated Retriever',\n", " 'Golden Retriever', 'Labrador Retriever',\n", " 'Chesapeake Bay Retriever', 'German Shorthaired Pointer', 'Vizsla',\n", " 'English Setter', 'Irish Setter', 'Gordon Setter', 'Brittany',\n", " 'Clumber Spaniel', 'English Springer Spaniel',\n", " 'Welsh Springer Spaniel', 'Cocker Spaniels', 'Sussex Spaniel',\n", " 'Irish Water Spaniel', 'Kuvasz', 'Schipperke', 'Groenendael',\n", " 'Malinois', 'Briard', 'Australian Kelpie', 'Komondor',\n", " 'Old English Sheepdog', 'Shetland Sheepdog', 'collie',\n", " 'Border Collie', 'Bouvier des Flandres', 'Rottweiler',\n", " 'German Shepherd Dog', 'Dobermann', 'Miniature Pinscher',\n", " 'Greater Swiss Mountain Dog', 'Bernese Mountain Dog',\n", " 'Appenzeller Sennenhund', 'Entlebucher Sennenhund', 'Boxer',\n", " 'Bullmastiff', 'Tibetan Mastiff', 'French Bulldog', 'Great Dane',\n", " 'St. Bernard', 'husky', 'Alaskan Malamute', 'Siberian Husky',\n", " 'Dalmatian', 'Affenpinscher', 'Basenji', 'pug', 'Leonberger',\n", " 'Newfoundland', 'Pyrenean Mountain Dog', 'Samoyed', 'Pomeranian',\n", " 'Chow Chow', 'Keeshond', 'Griffon Bruxellois',\n", " 'Pembroke Welsh Corgi', 'Cardigan Welsh Corgi', 'Toy Poodle',\n", " 'Miniature Poodle', 'Standard Poodle', 'Mexican hairless dog',\n", " 'grey wolf', 'Alaskan tundra wolf', 'red wolf', 'coyote', 'dingo',\n", " 'dhole', 'African wild dog', 'hyena', 'red fox', 'kit fox',\n", " 'Arctic fox', 'grey fox', 'tabby cat', 'tiger cat', 'Persian cat',\n", " 'Siamese cat', 'Egyptian Mau', 'cougar', 'lynx', 'leopard',\n", " 'snow leopard', 'jaguar', 'lion', 'tiger', 'cheetah', 'brown bear',\n", " 'American black bear', 'polar bear', 'sloth bear', 'mongoose',\n", " 'meerkat', 'tiger beetle', 'ladybug', 'ground beetle',\n", " 'longhorn beetle', 'leaf beetle', 'dung beetle',\n", " 'rhinoceros beetle', 'weevil', 'fly', 'bee', 'ant', 'grasshopper',\n", " 'cricket', 'stick insect', 'cockroach', 'mantis', 'cicada',\n", " 'leafhopper', 'lacewing', 'dragonfly', 'damselfly', 'red admiral',\n", " 'ringlet', 'monarch butterfly', 'small white', 'sulphur butterfly',\n", " 'gossamer-winged butterfly', 'starfish', 'sea urchin',\n", " 'sea cucumber', 'cottontail rabbit', 'hare', 'Angora rabbit',\n", " 'hamster', 'porcupine', 'fox squirrel', 'marmot', 'beaver',\n", " 'guinea pig', 'common sorrel', 'zebra', 'pig', 'wild boar',\n", " 'warthog', 'hippopotamus', 'ox', 'water buffalo', 'bison', 'ram',\n", " 'bighorn sheep', 'Alpine ibex', 'hartebeest', 'impala', 'gazelle',\n", " 'dromedary', 'llama', 'weasel', 'mink', 'European polecat',\n", " 'black-footed ferret', 'otter', 'skunk', 'badger', 'armadillo',\n", " 'three-toed sloth', 'orangutan', 'gorilla', 'chimpanzee', 'gibbon',\n", " 'siamang', 'guenon', 'patas monkey', 'baboon', 'macaque', 'langur',\n", " 'black-and-white colobus', 'proboscis monkey', 'marmoset',\n", " 'white-headed capuchin', 'howler monkey', 'titi',\n", " \"Geoffroy's spider monkey\", 'common squirrel monkey',\n", " 'ring-tailed lemur', 'indri', 'Asian elephant',\n", " 'African bush elephant', 'red panda', 'giant panda', 'snoek',\n", " 'eel', 'coho salmon', 'rock beauty', 'clownfish', 'sturgeon',\n", " 'garfish', 'lionfish', 'pufferfish', 'abacus', 'abaya',\n", " 'academic gown', 'accordion', 'acoustic guitar',\n", " 'aircraft carrier', 'airliner', 'airship', 'altar', 'ambulance',\n", " 'amphibious vehicle', 'analog clock', 'apiary', 'apron',\n", " 'waste container', 'assault rifle', 'backpack', 'bakery',\n", " 'balance beam', 'balloon', 'ballpoint pen', 'Band-Aid', 'banjo',\n", " 'baluster', 'barbell', 'barber chair', 'barbershop', 'barn',\n", " 'barometer', 'barrel', 'wheelbarrow', 'baseball', 'basketball',\n", " 'bassinet', 'bassoon', 'swimming cap', 'bath towel', 'bathtub',\n", " 'station wagon', 'lighthouse', 'beaker', 'military cap',\n", " 'beer bottle', 'beer glass', 'bell-cot', 'bib', 'tandem bicycle',\n", " 'bikini', 'ring binder', 'binoculars', 'birdhouse', 'boathouse',\n", " 'bobsleigh', 'bolo tie', 'poke bonnet', 'bookcase', 'bookstore',\n", " 'bottle cap', 'bow', 'bow tie', 'brass', 'bra', 'breakwater',\n", " 'breastplate', 'broom', 'bucket', 'buckle', 'bulletproof vest',\n", " 'high-speed train', 'butcher shop', 'taxicab', 'cauldron',\n", " 'candle', 'cannon', 'canoe', 'can opener', 'cardigan',\n", " 'car mirror', 'carousel', 'tool kit', 'carton', 'car wheel',\n", " 'automated teller machine', 'cassette', 'cassette player',\n", " 'castle', 'catamaran', 'CD player', 'cello', 'mobile phone',\n", " 'chain', 'chain-link fence', 'chain mail', 'chainsaw', 'chest',\n", " 'chiffonier', 'chime', 'china cabinet', 'Christmas stocking',\n", " 'church', 'movie theater', 'cleaver', 'cliff dwelling', 'cloak',\n", " 'clogs', 'cocktail shaker', 'coffee mug', 'coffeemaker', 'coil',\n", " 'combination lock', 'computer keyboard', 'confectionery store',\n", " 'container ship', 'convertible', 'corkscrew', 'cornet',\n", " 'cowboy boot', 'cowboy hat', 'cradle', 'crane (machine)',\n", " 'crash helmet', 'crate', 'infant bed', 'Crock Pot', 'croquet ball',\n", " 'crutch', 'cuirass', 'dam', 'desk', 'desktop computer',\n", " 'rotary dial telephone', 'diaper', 'digital clock',\n", " 'digital watch', 'dining table', 'dishcloth', 'dishwasher',\n", " 'disc brake', 'dock', 'dog sled', 'dome', 'doormat',\n", " 'drilling rig', 'drum', 'drumstick', 'dumbbell', 'Dutch oven',\n", " 'electric fan', 'electric guitar', 'electric locomotive',\n", " 'entertainment center', 'envelope', 'espresso machine',\n", " 'face powder', 'feather boa', 'filing cabinet', 'fireboat',\n", " 'fire engine', 'fire screen sheet', 'flagpole', 'flute',\n", " 'folding chair', 'football helmet', 'forklift', 'fountain',\n", " 'fountain pen', 'four-poster bed', 'freight car', 'French horn',\n", " 'frying pan', 'fur coat', 'garbage truck', 'gas mask', 'gas pump',\n", " 'goblet', 'go-kart', 'golf ball', 'golf cart', 'gondola', 'gong',\n", " 'gown', 'grand piano', 'greenhouse', 'grille', 'grocery store',\n", " 'guillotine', 'barrette', 'hair spray', 'half-track', 'hammer',\n", " 'hamper', 'hair dryer', 'hand-held computer', 'handkerchief',\n", " 'hard disk drive', 'harmonica', 'harp', 'harvester', 'hatchet',\n", " 'holster', 'home theater', 'honeycomb', 'hook', 'hoop skirt',\n", " 'horizontal bar', 'horse-drawn vehicle', 'hourglass', 'iPod',\n", " 'clothes iron', \"jack-o'-lantern\", 'jeans', 'jeep', 'T-shirt',\n", " 'jigsaw puzzle', 'pulled rickshaw', 'joystick', 'kimono',\n", " 'knee pad', 'knot', 'lab coat', 'ladle', 'lampshade',\n", " 'laptop computer', 'lawn mower', 'lens cap', 'paper knife',\n", " 'library', 'lifeboat', 'lighter', 'limousine', 'ocean liner',\n", " 'lipstick', 'slip-on shoe', 'lotion', 'speaker', 'loupe',\n", " 'sawmill', 'magnetic compass', 'mail bag', 'mailbox', 'tights',\n", " 'tank suit', 'manhole cover', 'maraca', 'marimba', 'mask', 'match',\n", " 'maypole', 'maze', 'measuring cup', 'medicine chest', 'megalith',\n", " 'microphone', 'microwave oven', 'military uniform', 'milk can',\n", " 'minibus', 'miniskirt', 'minivan', 'missile', 'mitten',\n", " 'mixing bowl', 'mobile home', 'Model T', 'modem', 'monastery',\n", " 'monitor', 'moped', 'mortar', 'square academic cap', 'mosque',\n", " 'mosquito net', 'scooter', 'mountain bike', 'tent',\n", " 'computer mouse', 'mousetrap', 'moving van', 'muzzle', 'nail',\n", " 'neck brace', 'necklace', 'nipple', 'notebook computer', 'obelisk',\n", " 'oboe', 'ocarina', 'odometer', 'oil filter', 'organ',\n", " 'oscilloscope', 'overskirt', 'bullock cart', 'oxygen mask',\n", " 'packet', 'paddle', 'paddle wheel', 'padlock', 'paintbrush',\n", " 'pajamas', 'palace', 'pan flute', 'paper towel', 'parachute',\n", " 'parallel bars', 'park bench', 'parking meter', 'passenger car',\n", " 'patio', 'payphone', 'pedestal', 'pencil case', 'pencil sharpener',\n", " 'perfume', 'Petri dish', 'photocopier', 'plectrum', 'Pickelhaube',\n", " 'picket fence', 'pickup truck', 'pier', 'piggy bank',\n", " 'pill bottle', 'pillow', 'ping-pong ball', 'pinwheel',\n", " 'pirate ship', 'pitcher', 'hand plane', 'planetarium',\n", " 'plastic bag', 'plate rack', 'plow', 'plunger', 'Polaroid camera',\n", " 'pole', 'police van', 'poncho', 'billiard table', 'soda bottle',\n", " 'pot', \"potter's wheel\", 'power drill', 'prayer rug', 'printer',\n", " 'prison', 'projectile', 'projector', 'hockey puck', 'punching bag',\n", " 'purse', 'quill', 'quilt', 'race car', 'racket', 'radiator',\n", " 'radio', 'radio telescope', 'rain barrel', 'recreational vehicle',\n", " 'reel', 'reflex camera', 'refrigerator', 'remote control',\n", " 'restaurant', 'revolver', 'rifle', 'rocking chair', 'rotisserie',\n", " 'eraser', 'rugby ball', 'ruler', 'running shoe', 'safe',\n", " 'safety pin', 'salt shaker', 'sandal', 'sarong', 'saxophone',\n", " 'scabbard', 'weighing scale', 'school bus', 'schooner',\n", " 'scoreboard', 'CRT screen', 'screw', 'screwdriver', 'seat belt',\n", " 'sewing machine', 'shield', 'shoe store', 'shoji',\n", " 'shopping basket', 'shopping cart', 'shovel', 'shower cap',\n", " 'shower curtain', 'ski', 'ski mask', 'sleeping bag', 'slide rule',\n", " 'sliding door', 'slot machine', 'snorkel', 'snowmobile',\n", " 'snowplow', 'soap dispenser', 'soccer ball', 'sock',\n", " 'solar thermal collector', 'sombrero', 'soup bowl', 'space bar',\n", " 'space heater', 'space shuttle', 'spatula', 'motorboat',\n", " 'spider web', 'spindle', 'sports car', 'spotlight', 'stage',\n", " 'steam locomotive', 'through arch bridge', 'steel drum',\n", " 'stethoscope', 'scarf', 'stone wall', 'stopwatch', 'stove',\n", " 'strainer', 'tram', 'stretcher', 'couch', 'stupa', 'submarine',\n", " 'suit', 'sundial', 'sunglass', 'sunglasses', 'sunscreen',\n", " 'suspension bridge', 'mop', 'sweatshirt', 'swimsuit', 'swing',\n", " 'switch', 'syringe', 'table lamp', 'tank', 'tape player', 'teapot',\n", " 'teddy bear', 'television', 'tennis ball', 'thatched roof',\n", " 'front curtain', 'thimble', 'threshing machine', 'throne',\n", " 'tile roof', 'toaster', 'tobacco shop', 'toilet seat', 'torch',\n", " 'totem pole', 'tow truck', 'toy store', 'tractor',\n", " 'semi-trailer truck', 'tray', 'trench coat', 'tricycle',\n", " 'trimaran', 'tripod', 'triumphal arch', 'trolleybus', 'trombone',\n", " 'tub', 'turnstile', 'typewriter keyboard', 'umbrella', 'unicycle',\n", " 'upright piano', 'vacuum cleaner', 'vase', 'vault', 'velvet',\n", " 'vending machine', 'vestment', 'viaduct', 'violin', 'volleyball',\n", " 'waffle iron', 'wall clock', 'wallet', 'wardrobe',\n", " 'military aircraft', 'sink', 'washing machine', 'water bottle',\n", " 'water jug', 'water tower', 'whiskey jug', 'whistle', 'wig',\n", " 'window screen', 'window shade', 'Windsor tie', 'wine bottle',\n", " 'wing', 'wok', 'wooden spoon', 'wool', 'split-rail fence',\n", " 'shipwreck', 'yawl', 'yurt', 'website', 'comic book', 'crossword',\n", " 'traffic sign', 'traffic light', 'dust jacket', 'menu', 'plate',\n", " 'guacamole', 'consomme', 'hot pot', 'trifle', 'ice cream',\n", " 'ice pop', 'baguette', 'bagel', 'pretzel', 'cheeseburger',\n", " 'hot dog', 'mashed potato', 'cabbage', 'broccoli', 'cauliflower',\n", " 'zucchini', 'spaghetti squash', 'acorn squash', 'butternut squash',\n", " 'cucumber', 'artichoke', 'bell pepper', 'cardoon', 'mushroom',\n", " 'Granny Smith', 'strawberry', 'orange', 'lemon', 'fig',\n", " 'pineapple', 'banana', 'jackfruit', 'custard apple', 'pomegranate',\n", " 'hay', 'carbonara', 'chocolate syrup', 'dough', 'meatloaf',\n", " 'pizza', 'pot pie', 'burrito', 'red wine', 'espresso', 'cup',\n", " 'eggnog', 'alp', 'bubble', 'cliff', 'coral reef', 'geyser',\n", " 'lakeshore', 'promontory', 'shoal', 'seashore', 'valley',\n", " 'volcano', 'baseball player', 'bridegroom', 'scuba diver',\n", " 'rapeseed', 'daisy', \"yellow lady's slipper\", 'corn', 'acorn',\n", " 'rose hip', 'horse chestnut seed', 'coral fungus', 'agaric',\n", " 'gyromitra', 'stinkhorn mushroom', 'earth star',\n", " 'hen-of-the-woods', 'bolete', 'ear', 'toilet paper'], dtype=' List[str]:\n", " input_datas = self.preprocess(image_ndarrays)\n", " input_name = self.artifacts.model.get_inputs()[0].name\n", " \n", " outputs = []\n", " for i in range(input_datas.shape[0]):\n", " raw_result = self.artifacts.model.run([], {input_name: input_datas[i:i+1]})\n", " result = self.post_process(raw_result)\n", " idx = np.argmax(result)\n", " sort_idx = np.flip(np.squeeze(np.argsort(result)))\n", "\n", " # return top 5 labels\n", " outputs.append(self.artifacts.labels[sort_idx[:5]])\n", " return outputs\n", " \n" ] }, { "cell_type": "code", "execution_count": 10, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "[2020-09-22 12:44:00,993] WARNING - Using BentoML installed in `editable` model, the local BentoML repository including all code changes will be packaged together with saved bundle created, under the './bundled_pip_dependencies' directory of the saved bundle.\n", "[2020-09-22 12:44:01,431] INFO - Using default docker base image: `None` specified inBentoML config file or env var. User must make sure that the docker base image either has Python 3.7 or conda installed.\n", "[2020-09-22 12:44:03,187] INFO - Detected non-PyPI-released BentoML installed, copying local BentoML modulefiles to target saved bundle path..\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "/usr/local/anaconda3/envs/dev-py3/lib/python3.7/site-packages/setuptools/dist.py:476: UserWarning: Normalizing '0.9.0.pre+3.gcebf2015' to '0.9.0rc0+3.gcebf2015'\n", " normalized_version,\n", "warning: no previously-included files matching '*~' found anywhere in distribution\n", "warning: no previously-included files matching '*.pyo' found anywhere in distribution\n", "warning: no previously-included files matching '.git' found anywhere in distribution\n", "warning: no previously-included files matching '.ipynb_checkpoints' found anywhere in distribution\n", "warning: no previously-included files matching '__pycache__' found anywhere in distribution\n", "no previously-included directories found matching 'e2e_tests'\n", "no previously-included directories found matching 'tests'\n", "no previously-included directories found matching 'benchmark'\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "UPDATING BentoML-0.9.0rc0+3.gcebf2015/bentoml/_version.py\n", "set BentoML-0.9.0rc0+3.gcebf2015/bentoml/_version.py to '0.9.0.pre+3.gcebf2015'\n", "[2020-09-22 12:44:08,076] INFO - BentoService bundle 'OnnxResnet50:20200922124402_4DE94A' saved to: /Users/bozhaoyu/bentoml/repository/OnnxResnet50/20200922124402_4DE94A\n" ] }, { "data": { "text/plain": [ "'/Users/bozhaoyu/bentoml/repository/OnnxResnet50/20200922124402_4DE94A'" ] }, "execution_count": 10, "metadata": {}, "output_type": "execute_result" } ], "source": [ "from onnx_resnet50 import OnnxResnet50\n", "\n", "svc = OnnxResnet50()\n", "svc.pack('labels', labels)\n", "svc.pack('model', 'resnet50v2/resnet50v2.onnx')\n", "\n", "saved_path = svc.save()\n", "saved_path" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## REST API Model Serving\n", "\n", "\n", "To start a REST API model server with the BentoService saved above, use the bentoml serve command:" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "[2020-09-22 14:29:26,500] INFO - Getting latest version OnnxResnet50:20200922124402_4DE94A\n", "[2020-09-22 14:29:26,501] INFO - Starting BentoML API server in development mode..\n", "[2020-09-22 14:29:26,680] WARNING - Using BentoML installed in `editable` model, the local BentoML repository including all code changes will be packaged together with saved bundle created, under the './bundled_pip_dependencies' directory of the saved bundle.\n", "[2020-09-22 14:29:26,696] WARNING - Saved BentoService bundle version mismatch: loading BentoService bundle create with BentoML version 0.9.0.pre, but loading from BentoML version 0.9.0.pre+3.gcebf2015\n", "[2020-09-22 14:29:26,858] INFO - Using default docker base image: `None` specified inBentoML config file or env var. User must make sure that the docker base image either has Python 3.7 or conda installed.\n", " * Serving Flask app \"OnnxResnet50\" (lazy loading)\n", " * Environment: production\n", "\u001b[31m WARNING: This is a development server. Do not use it in a production deployment.\u001b[0m\n", "\u001b[2m Use a production WSGI server instead.\u001b[0m\n", " * Debug mode: off\n", " * Running on http://127.0.0.1:5001/ (Press CTRL+C to quit)\n", "[2020-09-22 14:29:47,228] INFO - Initializing onnxruntime InferenceSession from onnx file:'/Users/bozhaoyu/bentoml/repository/OnnxResnet50/20200922124402_4DE94A/OnnxResnet50/artifacts/model.onnx'\n", "[2020-09-22 14:29:52,696] INFO - {'service_name': 'OnnxResnet50', 'service_version': '20200922124402_4DE94A', 'api': 'predict', 'task': {'data': {'name': 'dog.jpg'}, 'task_id': '78788565-41ac-49ca-9d2e-c09bf8d9cd15', 'http_headers': (('Host', '127.0.0.1:5001'), ('User-Agent', 'curl/7.65.3'), ('Accept', '*/*'), ('Content-Length', '21426'), ('Content-Type', 'multipart/form-data; boundary=------------------------c405a7b3410476a3'), ('Expect', '100-continue'))}, 'result': {'data': '[\"Golden Retriever\", \"Labrador Retriever\", \"Sussex Spaniel\", \"Vizsla\", \"Otterhound\"]', 'http_status': 200, 'http_headers': (('Content-Type', 'application/json'),)}, 'request_id': '78788565-41ac-49ca-9d2e-c09bf8d9cd15'}\n", "127.0.0.1 - - [22/Sep/2020 14:29:52] \"\u001b[37mPOST /predict HTTP/1.1\u001b[0m\" 200 -\n", "WARNING: Logging before flag parsing goes to stderr.\n", "I0922 14:29:52.697955 4778073536 _internal.py:122] 127.0.0.1 - - [22/Sep/2020 14:29:52] \"\u001b[37mPOST /predict HTTP/1.1\u001b[0m\" 200 -\n" ] } ], "source": [ "!bentoml serve OnnxResnet50:latest" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "If you are running this notebook from Google Colab, you can start the dev server with `--run-with-ngrok` option, to gain acccess to the API endpoint via a public endpoint managed by [ngrok](https://ngrok.com/):" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "!bentoml serve OnnxResnet50:latest --run-with-ngrok" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Sending POST request from termnial:\n", "```bash\n", "curl -X POST \"http://127.0.0.1:5000/predict\" -F image=@dog.jpg\n", "```\n", "\n", "```bash\n", "curl -X POST \"http://127.0.0.1:5000/predict\" -H \"Content-Type: image/png\" --data-binary @dog.jpg\n", "```\n", "\n", "Go visit http://127.0.0.1:5000/ from your browser, click `/predict` -> `Try it out` -> `Choose File` -> `Execute` to sumbit an image from your computer" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Containerize model server with Docker\n", "\n", "\n", "One common way of distributing this model API server for production deployment, is via Docker containers. And BentoML provides a convenient way to do that.\n", "\n", "Note that docker is **not available in Google Colab**. You will need to download and run this notebook locally to try out this containerization with docker feature.\n", "\n", "If you already have docker configured, simply run the follow command to product a docker container serving the IrisClassifier prediction service created above:" ] }, { "cell_type": "code", "execution_count": 1, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "[2020-09-22 14:31:36,307] INFO - Getting latest version OnnxResnet50:20200922124402_4DE94A\n", "\u001b[39mFound Bento: /Users/bozhaoyu/bentoml/repository/OnnxResnet50/20200922124402_4DE94A\u001b[0m\n", "[2020-09-22 14:31:36,347] WARNING - Using BentoML installed in `editable` model, the local BentoML repository including all code changes will be packaged together with saved bundle created, under the './bundled_pip_dependencies' directory of the saved bundle.\n", "[2020-09-22 14:31:36,364] WARNING - Saved BentoService bundle version mismatch: loading BentoService bundle create with BentoML version 0.9.0.pre, but loading from BentoML version 0.9.0.pre+3.gcebf2015\n", "\u001b[39mTag not specified, using tag parsed from BentoService: 'onnxresnet50:20200922124402_4DE94A'\u001b[0m\n", "Building Docker image onnxresnet50:20200922124402_4DE94A from OnnxResnet50:latest \n", "-we in here\n", "processed docker file\n", "(None, None)\n", "root in create archive /Users/bozhaoyu/bentoml/repository/OnnxResnet50/20200922124402_4DE94A ['Dockerfile', 'MANIFEST.in', 'OnnxResnet50', 'OnnxResnet50/__init__.py', 'OnnxResnet50/__pycache__', 'OnnxResnet50/__pycache__/onnx_resnet50.cpython-37.pyc', 'OnnxResnet50/artifacts', 'OnnxResnet50/artifacts/__init__.py', 'OnnxResnet50/artifacts/labels.pkl', 'OnnxResnet50/artifacts/model.onnx', 'OnnxResnet50/bentoml.yml', 'OnnxResnet50/onnx_resnet50.py', 'README.md', 'bentoml-init.sh', 'bentoml.yml', 'bundled_pip_dependencies', 'bundled_pip_dependencies/BentoML-0.9.0rc0+3.gcebf2015.tar.gz', 'docker-entrypoint.sh', 'environment.yml', 'python_version', 'requirements.txt', 'setup.py']\n", "\b\\about to build\n", "about to upgrade params\n", "check each param and update\n", "if use config proxy\n", "if buildargs\n", "if shmsize\n", "if labels\n", "if cache from\n", "if target\n", "if network_mode\n", "if squash\n", "if extra hosts is not None\n", "if platform is not None\n", "if isolcation is not None\n", "if context is not None\n", "setting auth {'Content-Type': 'application/tar'}\n", "\b\\docker build {'t': 'onnxresnet50:20200922124402_4DE94A', 'remote': None, 'q': False, 'nocache': False, 'rm': False, 'forcerm': False, 'pull': False, 'dockerfile': (None, None)}\n", "\b|docker response \n", "context closes\n", "\b\\print responses\n", "\u001b[39mStep 1/15 : FROM bentoml/model-server:0.9.0.pre\u001b[0m\n", "\u001b[39m ---> a25066aa8b0e\u001b[0m\n", "\u001b[39mStep 2/15 : ARG EXTRA_PIP_INSTALL_ARGS=\u001b[0m\n", "\u001b[39m ---> Using cache\u001b[0m\n", "\u001b[39m ---> fc6e47d06522\u001b[0m\n", "\u001b[39mStep 3/15 : ENV EXTRA_PIP_INSTALL_ARGS $EXTRA_PIP_INSTALL_ARGS\u001b[0m\n", "\u001b[39m ---> Using cache\u001b[0m\n", "\u001b[39m ---> db8172e98571\u001b[0m\n", "\u001b[39mStep 4/15 : COPY environment.yml requirements.txt setup.sh* bentoml-init.sh python_version* /bento/\u001b[0m\n", "\b|\u001b[39m ---> fafb86f1ecf0\u001b[0m\n", "\u001b[39mStep 5/15 : WORKDIR /bento\u001b[0m\n", "\b\\\u001b[39m ---> Running in a9cb10db03c3\u001b[0m\n", "\b/\u001b[39m ---> 64823e6bac4d\u001b[0m\n", "\u001b[39mStep 6/15 : RUN chmod +x /bento/bentoml-init.sh\u001b[0m\n", "\u001b[39m ---> Running in 5ccb5f255208\u001b[0m\n", "\b\\\u001b[39m ---> 40bfb0f94734\u001b[0m\n", "\u001b[39mStep 7/15 : RUN if [ -f /bento/bentoml-init.sh ]; then bash -c /bento/bentoml-init.sh; fi\u001b[0m\n", "\u001b[39m ---> Running in ec371ba7c47d\u001b[0m\n", "\b|\u001b[39m\u001b[91m+++ dirname /bento/bentoml-init.sh\n", "\u001b[0m\u001b[0m\n", "\u001b[39m\u001b[91m++ cd /bento\n", "++ pwd -P\n", "+ SAVED_BUNDLE_PATH=/bento\n", "+ cd /bento\n", "+ '[' -f ./setup.sh ']'\n", "+ '[' -f ./python_version ']'\n", "\u001b[0m\u001b[0m\n", "\u001b[39m\u001b[91m++ cat ./python_version\n", "\u001b[0m\u001b[0m\n", "\u001b[39m\u001b[91m+ PY_VERSION_SAVED=3.7.3\n", "+ DESIRED_PY_VERSION=3.7\n", "\u001b[0m\u001b[0m\n", "\u001b[39m\u001b[91m++ python -c 'import sys; print(f\"{sys.version_info.major}.{sys.version_info.minor}\")'\n", "\u001b[0m\u001b[0m\n", "\u001b[39m\u001b[91m+ CURRENT_PY_VERSION=3.7\n", "+ [[ 3.7 == \\3\\.\\7 ]]\n", "+ echo 'Python Version in docker base image 3.7 matches requirement python=3.7. Skipping.'\n", "\u001b[0m\u001b[0m\n", "\u001b[39mPython Version in docker base image 3.7 matches requirement python=3.7. Skipping.\u001b[0m\n", "\u001b[39mUpdating conda base environment with environment.yml\u001b[0m\n", "\u001b[39m\u001b[91m+ command -v conda\n", "+ echo 'Updating conda base environment with environment.yml'\n", "+ conda env update -n base -f ./environment.yml\n", "\u001b[0m\u001b[0m\n", "\b-\u001b[39mCollecting package metadata (repodata.json): ...working... \u001b[0m\n", "\b|\u001b[39mdone\n", "Solving environment: \u001b[0m\n", "\u001b[39m...working... \u001b[0m\n", "\b-\u001b[39mdone\u001b[0m\n", "\b/\u001b[39m\n", "Downloading and Extracting Packages\n", "python_abi-3.7 | 4 KB | | 0% \u001b[0m\n", "python_abi-3.7 | 4 KB | ########## | 100% \u001b[0m\n", "python_abi-3.7 | 4 KB | ########## | 100% \u001b[0m\n", "\u001b[39m\n", "ca-certificates-2020 | 145 KB | | 0% \u001b[0m\n", "ca-certificates-2020 | 145 KB | ########## | 100% \u001b[0m\n", "\u001b[39m\n", "pip-20.2.3 | 1.1 MB | | 0% \u001b[0m\n", "pip-20.2.3 | 1.1 MB | ##9 | 29% \u001b[0m\n", "pip-20.2.3 | 1.1 MB | ########## | 100% \u001b[0m\n", "pip-20.2.3 | 1.1 MB | ########## | 100% \u001b[0m\n", "\u001b[39m\n", "python-3.7.9 | 45.3 MB | | 0% \u001b[0m\n", "python-3.7.9 | 45.3 MB | | 0% \u001b[0m\n", "python-3.7.9 | 45.3 MB | 1 | 1% \u001b[0m\n", "python-3.7.9 | 45.3 MB | 3 | 3% \u001b[0m\n", "python-3.7.9 | 45.3 MB | 6 | 7% \u001b[0m\n", "python-3.7.9 | 45.3 MB | 8 | 9% \u001b[0m\n", "python-3.7.9 | 45.3 MB | #1 | 11% \u001b[0m\n", "python-3.7.9 | 45.3 MB | #3 | 14% \u001b[0m\n", "python-3.7.9 | 45.3 MB | #6 | 17% \u001b[0m\n", "python-3.7.9 | 45.3 MB | ## | 20% \u001b[0m\n", "python-3.7.9 | 45.3 MB | ##4 | 24% \u001b[0m\n", "python-3.7.9 | 45.3 MB | ##9 | 30% \u001b[0m\n", "python-3.7.9 | 45.3 MB | ###4 | 34% \u001b[0m\n", "python-3.7.9 | 45.3 MB | ###8 | 39% \u001b[0m\n", "python-3.7.9 | 45.3 MB | ####2 | 43% \u001b[0m\n", "python-3.7.9 | 45.3 MB | ####7 | 47% \u001b[0m\n", "python-3.7.9 | 45.3 MB | #####1 | 51% \u001b[0m\n", "python-3.7.9 | 45.3 MB | #####5 | 55% \u001b[0m\n", "python-3.7.9 | 45.3 MB | ###### | 60% \u001b[0m\n", "python-3.7.9 | 45.3 MB | ######4 | 65% \u001b[0m\n", "python-3.7.9 | 45.3 MB | ######9 | 69% \u001b[0m\n", "python-3.7.9 | 45.3 MB | #######3 | 73% \u001b[0m\n", "python-3.7.9 | 45.3 MB | #######7 | 77% \u001b[0m\n", "python-3.7.9 | 45.3 MB | ########2 | 82% \u001b[0m\n", "python-3.7.9 | 45.3 MB | ########6 | 87% \u001b[0m\n", "python-3.7.9 | 45.3 MB | #########2 | 93% \u001b[0m\n", "python-3.7.9 | 45.3 MB | #########6 | 97% \u001b[0m\n", "python-3.7.9 | 45.3 MB | ########## | 100% \u001b[0m\n", "\u001b[39m\n", "openssl-1.1.1h | 2.1 MB | | 0% \u001b[0m\n", "openssl-1.1.1h | 2.1 MB | ###4 | 35% \u001b[0m\n", "openssl-1.1.1h | 2.1 MB | ########## | 100% \u001b[0m\n", "openssl-1.1.1h | 2.1 MB | ########## | 100% \u001b[0m\n", "\u001b[39m\n", "readline-8.0 | 281 KB | | 0% \u001b[0m\n", "readline-8.0 | 281 KB | ########## | 100% \u001b[0m\n", "readline-8.0 | 281 KB | ########## | 100% \u001b[0m\n", "\u001b[39m\n", "certifi-2020.6.20 | 151 KB | | 0% \u001b[0m\n", "certifi-2020.6.20 | 151 KB | ########## | 100% \u001b[0m\n", "\u001b[39m\n", "Preparing transaction: ...working... \u001b[0m\n", "\b\\\u001b[39mdone\u001b[0m\n", "\u001b[39mVerifying transaction: \u001b[0m\n", "\u001b[39m...working... \u001b[0m\n", "\b-\u001b[39mdone\u001b[0m\n", "\u001b[39mExecuting transaction: ...working... \u001b[0m\n", "\b/\u001b[39mdone\u001b[0m\n", "\b\\\u001b[39m#\n", "# To activate this environment, use\n", "#\n", "# $ conda activate base\n", "#\n", "# To deactivate an active environment, use\n", "#\n", "# $ conda deactivate\u001b[0m\n", "\b/\u001b[39m\u001b[91m+ pip install -r ./requirements.txt --no-cache-dir\n", "\u001b[0m\u001b[0m\n", "\b|\u001b[39mRequirement already satisfied: bentoml==0.9.0.pre in /opt/conda/lib/python3.7/site-packages (from -r ./requirements.txt (line 1)) (0.9.0rc0)\u001b[0m\n", "\b|\u001b[39mCollecting imageio==2.5.0\u001b[0m\n", "\b\\\u001b[39m Downloading imageio-2.5.0-py3-none-any.whl (3.3 MB)\u001b[0m\n", "\b-\u001b[39mCollecting onnxruntime==1.3.0\u001b[0m\n", "\b/\u001b[39m Downloading onnxruntime-1.3.0-cp37-cp37m-manylinux1_x86_64.whl (3.9 MB)\u001b[0m\n", "\b/\u001b[39mCollecting numpy==1.18.4\u001b[0m\n", "\u001b[39m Downloading numpy-1.18.4-cp37-cp37m-manylinux1_x86_64.whl (20.2 MB)\u001b[0m\n", "\b/\u001b[39mRequirement already satisfied: sqlalchemy>=1.3.0 in /opt/conda/lib/python3.7/site-packages (from bentoml==0.9.0.pre->-r ./requirements.txt (line 1)) (1.3.19)\u001b[0m\n", "\u001b[39mRequirement already satisfied: configparser in /opt/conda/lib/python3.7/site-packages (from bentoml==0.9.0.pre->-r ./requirements.txt (line 1)) (5.0.0)\u001b[0m\n", "\u001b[39mRequirement already satisfied: packaging in /opt/conda/lib/python3.7/site-packages (from bentoml==0.9.0.pre->-r ./requirements.txt (line 1)) (20.4)\u001b[0m\n", "\u001b[39mRequirement already satisfied: sqlalchemy-utils<0.36.8 in /opt/conda/lib/python3.7/site-packages (from bentoml==0.9.0.pre->-r ./requirements.txt (line 1)) (0.36.7)\u001b[0m\n", "\b|\u001b[39mRequirement already satisfied: cerberus in /opt/conda/lib/python3.7/site-packages (from bentoml==0.9.0.pre->-r ./requirements.txt (line 1)) (1.3.2)\u001b[0m\n", "\u001b[39mRequirement already satisfied: multidict in /opt/conda/lib/python3.7/site-packages (from bentoml==0.9.0.pre->-r ./requirements.txt (line 1)) (4.7.6)\u001b[0m\n", "\u001b[39mRequirement already satisfied: protobuf>=3.6.0 in /opt/conda/lib/python3.7/site-packages (from bentoml==0.9.0.pre->-r ./requirements.txt (line 1)) (3.13.0)\u001b[0m\n", "\u001b[39mRequirement already satisfied: alembic in /opt/conda/lib/python3.7/site-packages (from bentoml==0.9.0.pre->-r ./requirements.txt (line 1)) (1.4.3)\u001b[0m\n", "\u001b[39mRequirement already satisfied: certifi in /opt/conda/lib/python3.7/site-packages (from bentoml==0.9.0.pre->-r ./requirements.txt (line 1)) (2020.6.20)\u001b[0m\n", "\u001b[39mRequirement already satisfied: flask in /opt/conda/lib/python3.7/site-packages (from bentoml==0.9.0.pre->-r ./requirements.txt (line 1)) (1.1.2)\u001b[0m\n", "\b\\\u001b[39mRequirement already satisfied: py-zipkin in /opt/conda/lib/python3.7/site-packages (from bentoml==0.9.0.pre->-r ./requirements.txt (line 1)) (0.20.0)\u001b[0m\n", "\u001b[39mRequirement already satisfied: grpcio<=1.27.2 in /opt/conda/lib/python3.7/site-packages (from bentoml==0.9.0.pre->-r ./requirements.txt (line 1)) (1.27.2)\u001b[0m\n", "\u001b[39mRequirement already satisfied: psutil in /opt/conda/lib/python3.7/site-packages (from bentoml==0.9.0.pre->-r ./requirements.txt (line 1)) (5.7.2)\u001b[0m\n", "\u001b[39mRequirement already satisfied: python-dateutil<3.0.0,>=2.7.3 in /opt/conda/lib/python3.7/site-packages (from bentoml==0.9.0.pre->-r ./requirements.txt (line 1)) (2.8.1)\u001b[0m\n", "\u001b[39mRequirement already satisfied: requests in /opt/conda/lib/python3.7/site-packages (from bentoml==0.9.0.pre->-r ./requirements.txt (line 1)) (2.24.0)\u001b[0m\n", "\u001b[39mRequirement already satisfied: aiohttp in /opt/conda/lib/python3.7/site-packages (from bentoml==0.9.0.pre->-r ./requirements.txt (line 1)) (3.6.2)\u001b[0m\n", "\u001b[39mRequirement already satisfied: ruamel.yaml>=0.15.0 in /opt/conda/lib/python3.7/site-packages (from bentoml==0.9.0.pre->-r ./requirements.txt (line 1)) (0.15.87)\u001b[0m\n", "\u001b[39mRequirement already satisfied: boto3 in /opt/conda/lib/python3.7/site-packages (from bentoml==0.9.0.pre->-r ./requirements.txt (line 1)) (1.15.2)\u001b[0m\n", "\b-\u001b[39mRequirement already satisfied: prometheus-client in /opt/conda/lib/python3.7/site-packages (from bentoml==0.9.0.pre->-r ./requirements.txt (line 1)) (0.8.0)\u001b[0m\n", "\u001b[39mRequirement already satisfied: gunicorn in /opt/conda/lib/python3.7/site-packages (from bentoml==0.9.0.pre->-r ./requirements.txt (line 1)) (20.0.4)\u001b[0m\n", "\u001b[39mRequirement already satisfied: python-json-logger in /opt/conda/lib/python3.7/site-packages (from bentoml==0.9.0.pre->-r ./requirements.txt (line 1)) (0.1.11)\u001b[0m\n", "\u001b[39mRequirement already satisfied: docker in /opt/conda/lib/python3.7/site-packages (from bentoml==0.9.0.pre->-r ./requirements.txt (line 1)) (4.3.1)\u001b[0m\n", "\u001b[39mRequirement already satisfied: humanfriendly in /opt/conda/lib/python3.7/site-packages (from bentoml==0.9.0.pre->-r ./requirements.txt (line 1)) (8.2)\u001b[0m\n", "\u001b[39mRequirement already satisfied: tabulate in /opt/conda/lib/python3.7/site-packages (from bentoml==0.9.0.pre->-r ./requirements.txt (line 1)) (0.8.7)\u001b[0m\n", "\u001b[39mRequirement already satisfied: click>=7.0 in /opt/conda/lib/python3.7/site-packages (from bentoml==0.9.0.pre->-r ./requirements.txt (line 1)) (7.1.2)\u001b[0m\n", "\b|\u001b[39mCollecting pillow\u001b[0m\n", "\u001b[39m Downloading Pillow-7.2.0-cp37-cp37m-manylinux1_x86_64.whl (2.2 MB)\u001b[0m\n", "\b/\u001b[39mCollecting onnx>=1.2.3\u001b[0m\n", "\u001b[39m Downloading onnx-1.7.0-cp37-cp37m-manylinux1_x86_64.whl (7.4 MB)\u001b[0m\n", "\b|\u001b[39mRequirement already satisfied: pyparsing>=2.0.2 in /opt/conda/lib/python3.7/site-packages (from packaging->bentoml==0.9.0.pre->-r ./requirements.txt (line 1)) (2.4.7)\u001b[0m\n", "\u001b[39mRequirement already satisfied: six in /opt/conda/lib/python3.7/site-packages (from packaging->bentoml==0.9.0.pre->-r ./requirements.txt (line 1)) (1.15.0)\u001b[0m\n", "\u001b[39mRequirement already satisfied: setuptools in /opt/conda/lib/python3.7/site-packages (from cerberus->bentoml==0.9.0.pre->-r ./requirements.txt (line 1)) (49.6.0.post20200814)\u001b[0m\n", "\u001b[39mRequirement already satisfied: Mako in /opt/conda/lib/python3.7/site-packages (from alembic->bentoml==0.9.0.pre->-r ./requirements.txt (line 1)) (1.1.3)\u001b[0m\n", "\u001b[39mRequirement already satisfied: python-editor>=0.3 in /opt/conda/lib/python3.7/site-packages (from alembic->bentoml==0.9.0.pre->-r ./requirements.txt (line 1)) (1.0.4)\u001b[0m\n", "\u001b[39mRequirement already satisfied: itsdangerous>=0.24 in /opt/conda/lib/python3.7/site-packages (from flask->bentoml==0.9.0.pre->-r ./requirements.txt (line 1)) (1.1.0)\u001b[0m\n", "\u001b[39mRequirement already satisfied: Jinja2>=2.10.1 in /opt/conda/lib/python3.7/site-packages (from flask->bentoml==0.9.0.pre->-r ./requirements.txt (line 1)) (2.11.2)\u001b[0m\n", "\u001b[39mRequirement already satisfied: Werkzeug>=0.15 in /opt/conda/lib/python3.7/site-packages (from flask->bentoml==0.9.0.pre->-r ./requirements.txt (line 1)) (1.0.1)\u001b[0m\n", "\b\\\u001b[39mRequirement already satisfied: thriftpy2>=0.4.0 in /opt/conda/lib/python3.7/site-packages (from py-zipkin->bentoml==0.9.0.pre->-r ./requirements.txt (line 1)) (0.4.11)\u001b[0m\n", "\u001b[39mRequirement already satisfied: chardet<4,>=3.0.2 in /opt/conda/lib/python3.7/site-packages (from requests->bentoml==0.9.0.pre->-r ./requirements.txt (line 1)) (3.0.4)\u001b[0m\n", "\u001b[39mRequirement already satisfied: urllib3!=1.25.0,!=1.25.1,<1.26,>=1.21.1 in /opt/conda/lib/python3.7/site-packages (from requests->bentoml==0.9.0.pre->-r ./requirements.txt (line 1)) (1.25.10)\u001b[0m\n", "\u001b[39mRequirement already satisfied: idna<3,>=2.5 in /opt/conda/lib/python3.7/site-packages (from requests->bentoml==0.9.0.pre->-r ./requirements.txt (line 1)) (2.10)\u001b[0m\n", "\u001b[39mRequirement already satisfied: attrs>=17.3.0 in /opt/conda/lib/python3.7/site-packages (from aiohttp->bentoml==0.9.0.pre->-r ./requirements.txt (line 1)) (20.2.0)\u001b[0m\n", "\u001b[39mRequirement already satisfied: yarl<2.0,>=1.0 in /opt/conda/lib/python3.7/site-packages (from aiohttp->bentoml==0.9.0.pre->-r ./requirements.txt (line 1)) (1.5.1)\u001b[0m\n", "\u001b[39mRequirement already satisfied: async-timeout<4.0,>=3.0 in /opt/conda/lib/python3.7/site-packages (from aiohttp->bentoml==0.9.0.pre->-r ./requirements.txt (line 1)) (3.0.1)\u001b[0m\n", "\u001b[39mRequirement already satisfied: jmespath<1.0.0,>=0.7.1 in /opt/conda/lib/python3.7/site-packages (from boto3->bentoml==0.9.0.pre->-r ./requirements.txt (line 1)) (0.10.0)\u001b[0m\n", "\u001b[39mRequirement already satisfied: s3transfer<0.4.0,>=0.3.0 in /opt/conda/lib/python3.7/site-packages (from boto3->bentoml==0.9.0.pre->-r ./requirements.txt (line 1)) (0.3.3)\u001b[0m\n", "\u001b[39mRequirement already satisfied: botocore<1.19.0,>=1.18.2 in /opt/conda/lib/python3.7/site-packages (from boto3->bentoml==0.9.0.pre->-r ./requirements.txt (line 1)) (1.18.2)\u001b[0m\n", "\u001b[39mRequirement already satisfied: websocket-client>=0.32.0 in /opt/conda/lib/python3.7/site-packages (from docker->bentoml==0.9.0.pre->-r ./requirements.txt (line 1)) (0.57.0)\u001b[0m\n", "\u001b[39mRequirement already satisfied: typing-extensions>=3.6.2.1 in /opt/conda/lib/python3.7/site-packages (from onnx>=1.2.3->onnxruntime==1.3.0->-r ./requirements.txt (line 3)) (3.7.4.3)\u001b[0m\n", "\u001b[39mRequirement already satisfied: MarkupSafe>=0.9.2 in /opt/conda/lib/python3.7/site-packages (from Mako->alembic->bentoml==0.9.0.pre->-r ./requirements.txt (line 1)) (1.1.1)\u001b[0m\n", "\b-\u001b[39mRequirement already satisfied: ply<4.0,>=3.4 in /opt/conda/lib/python3.7/site-packages (from thriftpy2>=0.4.0->py-zipkin->bentoml==0.9.0.pre->-r ./requirements.txt (line 1)) (3.11)\u001b[0m\n", "\b/\u001b[39mInstalling collected packages: pillow, numpy, imageio, onnx, onnxruntime\u001b[0m\n", "\b-\u001b[39m Attempting uninstall: numpy\u001b[0m\n", "\u001b[39m Found existing installation: numpy 1.19.2\u001b[0m\n", "\b|\u001b[39m Uninstalling numpy-1.19.2:\u001b[0m\n", "\b/\u001b[39m Successfully uninstalled numpy-1.19.2\u001b[0m\n", "\b/\u001b[39mSuccessfully installed imageio-2.5.0 numpy-1.18.4 onnx-1.7.0 onnxruntime-1.3.0 pillow-7.2.0\u001b[0m\n", "\b\\\u001b[39m ---> 88481f3057fc\u001b[0m\n", "\u001b[39mStep 8/15 : COPY . /bento\u001b[0m\n", "\b|\u001b[39m ---> 45ca074a1da1\u001b[0m\n", "\u001b[39mStep 9/15 : RUN if [ -d /bento/bundled_pip_dependencies ]; then pip install -U bundled_pip_dependencies/* ;fi\u001b[0m\n", "\u001b[39m ---> Running in 9bf9674c4d65\u001b[0m\n", "\b\\\u001b[39mProcessing ./bundled_pip_dependencies/BentoML-0.9.0rc0+3.gcebf2015.tar.gz\u001b[0m\n", "\b\\\u001b[39m Installing build dependencies: started\u001b[0m\n", "\b-\u001b[39m Installing build dependencies: finished with status 'done'\u001b[0m\n", "\u001b[39m Getting requirements to build wheel: started\u001b[0m\n", "\b/\u001b[39m Getting requirements to build wheel: finished with status 'done'\u001b[0m\n", "\u001b[39m Preparing wheel metadata: started\u001b[0m\n", "\b\\\u001b[39m Preparing wheel metadata: finished with status 'done'\u001b[0m\n", "\b/\u001b[39mRequirement already satisfied, skipping upgrade: gunicorn in /opt/conda/lib/python3.7/site-packages (from BentoML==0.9.0rc0+3.gcebf2015) (20.0.4)\u001b[0m\n", "\u001b[39mRequirement already satisfied, skipping upgrade: py-zipkin in /opt/conda/lib/python3.7/site-packages (from BentoML==0.9.0rc0+3.gcebf2015) (0.20.0)\u001b[0m\n", "\u001b[39mRequirement already satisfied, skipping upgrade: boto3 in /opt/conda/lib/python3.7/site-packages (from BentoML==0.9.0rc0+3.gcebf2015) (1.15.2)\u001b[0m\n", "\u001b[39mRequirement already satisfied, skipping upgrade: grpcio<=1.27.2 in /opt/conda/lib/python3.7/site-packages (from BentoML==0.9.0rc0+3.gcebf2015) (1.27.2)\u001b[0m\n", "\u001b[39mRequirement already satisfied, skipping upgrade: click>=7.0 in /opt/conda/lib/python3.7/site-packages (from BentoML==0.9.0rc0+3.gcebf2015) (7.1.2)\u001b[0m\n", "\u001b[39mRequirement already satisfied, skipping upgrade: python-json-logger in /opt/conda/lib/python3.7/site-packages (from BentoML==0.9.0rc0+3.gcebf2015) (0.1.11)\u001b[0m\n", "\u001b[39mRequirement already satisfied, skipping upgrade: tabulate in /opt/conda/lib/python3.7/site-packages (from BentoML==0.9.0rc0+3.gcebf2015) (0.8.7)\u001b[0m\n", "\u001b[39mRequirement already satisfied, skipping upgrade: python-dateutil<3.0.0,>=2.7.3 in /opt/conda/lib/python3.7/site-packages (from BentoML==0.9.0rc0+3.gcebf2015) (2.8.1)\u001b[0m\n", "\u001b[39mRequirement already satisfied, skipping upgrade: ruamel.yaml>=0.15.0 in /opt/conda/lib/python3.7/site-packages (from BentoML==0.9.0rc0+3.gcebf2015) (0.15.87)\u001b[0m\n", "\u001b[39mRequirement already satisfied, skipping upgrade: flask in /opt/conda/lib/python3.7/site-packages (from BentoML==0.9.0rc0+3.gcebf2015) (1.1.2)\u001b[0m\n", "\u001b[39mRequirement already satisfied, skipping upgrade: configparser in /opt/conda/lib/python3.7/site-packages (from BentoML==0.9.0rc0+3.gcebf2015) (5.0.0)\u001b[0m\n", "\u001b[39mRequirement already satisfied, skipping upgrade: psutil in /opt/conda/lib/python3.7/site-packages (from BentoML==0.9.0rc0+3.gcebf2015) (5.7.2)\u001b[0m\n", "\u001b[39mRequirement already satisfied, skipping upgrade: multidict in /opt/conda/lib/python3.7/site-packages (from BentoML==0.9.0rc0+3.gcebf2015) (4.7.6)\u001b[0m\n", "\u001b[39mRequirement already satisfied, skipping upgrade: prometheus-client in /opt/conda/lib/python3.7/site-packages (from BentoML==0.9.0rc0+3.gcebf2015) (0.8.0)\u001b[0m\n", "\u001b[39mRequirement already satisfied, skipping upgrade: docker in /opt/conda/lib/python3.7/site-packages (from BentoML==0.9.0rc0+3.gcebf2015) (4.3.1)\u001b[0m\n", "\b|\u001b[39mRequirement already satisfied, skipping upgrade: sqlalchemy-utils<0.36.8 in /opt/conda/lib/python3.7/site-packages (from BentoML==0.9.0rc0+3.gcebf2015) (0.36.7)\u001b[0m\n", "\u001b[39mRequirement already satisfied, skipping upgrade: packaging in /opt/conda/lib/python3.7/site-packages (from BentoML==0.9.0rc0+3.gcebf2015) (20.4)\u001b[0m\n", "\u001b[39mRequirement already satisfied, skipping upgrade: cerberus in /opt/conda/lib/python3.7/site-packages (from BentoML==0.9.0rc0+3.gcebf2015) (1.3.2)\u001b[0m\n", "\u001b[39mRequirement already satisfied, skipping upgrade: sqlalchemy>=1.3.0 in /opt/conda/lib/python3.7/site-packages (from BentoML==0.9.0rc0+3.gcebf2015) (1.3.19)\u001b[0m\n", "\b\\\u001b[39mRequirement already satisfied, skipping upgrade: humanfriendly in /opt/conda/lib/python3.7/site-packages (from BentoML==0.9.0rc0+3.gcebf2015) (8.2)\u001b[0m\n", "\u001b[39mRequirement already satisfied, skipping upgrade: certifi in /opt/conda/lib/python3.7/site-packages (from BentoML==0.9.0rc0+3.gcebf2015) (2020.6.20)\u001b[0m\n", "\u001b[39mRequirement already satisfied, skipping upgrade: requests in /opt/conda/lib/python3.7/site-packages (from BentoML==0.9.0rc0+3.gcebf2015) (2.24.0)\u001b[0m\n", "\u001b[39mRequirement already satisfied, skipping upgrade: protobuf>=3.6.0 in /opt/conda/lib/python3.7/site-packages (from BentoML==0.9.0rc0+3.gcebf2015) (3.13.0)\u001b[0m\n", "\u001b[39mRequirement already satisfied, skipping upgrade: numpy in /opt/conda/lib/python3.7/site-packages (from BentoML==0.9.0rc0+3.gcebf2015) (1.18.4)\u001b[0m\n", "\u001b[39mRequirement already satisfied, skipping upgrade: alembic in /opt/conda/lib/python3.7/site-packages (from BentoML==0.9.0rc0+3.gcebf2015) (1.4.3)\u001b[0m\n", "\u001b[39mRequirement already satisfied, skipping upgrade: aiohttp in /opt/conda/lib/python3.7/site-packages (from BentoML==0.9.0rc0+3.gcebf2015) (3.6.2)\u001b[0m\n", "\u001b[39mRequirement already satisfied, skipping upgrade: setuptools>=3.0 in /opt/conda/lib/python3.7/site-packages (from gunicorn->BentoML==0.9.0rc0+3.gcebf2015) (49.6.0.post20200814)\u001b[0m\n", "\u001b[39mRequirement already satisfied, skipping upgrade: thriftpy2>=0.4.0 in /opt/conda/lib/python3.7/site-packages (from py-zipkin->BentoML==0.9.0rc0+3.gcebf2015) (0.4.11)\u001b[0m\n", "\u001b[39mRequirement already satisfied, skipping upgrade: six in /opt/conda/lib/python3.7/site-packages (from py-zipkin->BentoML==0.9.0rc0+3.gcebf2015) (1.15.0)\u001b[0m\n", "\u001b[39mRequirement already satisfied, skipping upgrade: jmespath<1.0.0,>=0.7.1 in /opt/conda/lib/python3.7/site-packages (from boto3->BentoML==0.9.0rc0+3.gcebf2015) (0.10.0)\u001b[0m\n", "\u001b[39mRequirement already satisfied, skipping upgrade: s3transfer<0.4.0,>=0.3.0 in /opt/conda/lib/python3.7/site-packages (from boto3->BentoML==0.9.0rc0+3.gcebf2015) (0.3.3)\u001b[0m\n", "\u001b[39mRequirement already satisfied, skipping upgrade: botocore<1.19.0,>=1.18.2 in /opt/conda/lib/python3.7/site-packages (from boto3->BentoML==0.9.0rc0+3.gcebf2015) (1.18.2)\u001b[0m\n", "\u001b[39mRequirement already satisfied, skipping upgrade: itsdangerous>=0.24 in /opt/conda/lib/python3.7/site-packages (from flask->BentoML==0.9.0rc0+3.gcebf2015) (1.1.0)\u001b[0m\n", "\u001b[39mRequirement already satisfied, skipping upgrade: Jinja2>=2.10.1 in /opt/conda/lib/python3.7/site-packages (from flask->BentoML==0.9.0rc0+3.gcebf2015) (2.11.2)\u001b[0m\n", "\u001b[39mRequirement already satisfied, skipping upgrade: Werkzeug>=0.15 in /opt/conda/lib/python3.7/site-packages (from flask->BentoML==0.9.0rc0+3.gcebf2015) (1.0.1)\u001b[0m\n", "\b-\u001b[39mRequirement already satisfied, skipping upgrade: websocket-client>=0.32.0 in /opt/conda/lib/python3.7/site-packages (from docker->BentoML==0.9.0rc0+3.gcebf2015) (0.57.0)\u001b[0m\n", "\u001b[39mRequirement already satisfied, skipping upgrade: pyparsing>=2.0.2 in /opt/conda/lib/python3.7/site-packages (from packaging->BentoML==0.9.0rc0+3.gcebf2015) (2.4.7)\u001b[0m\n", "\u001b[39mRequirement already satisfied, skipping upgrade: chardet<4,>=3.0.2 in /opt/conda/lib/python3.7/site-packages (from requests->BentoML==0.9.0rc0+3.gcebf2015) (3.0.4)\u001b[0m\n", "\u001b[39mRequirement already satisfied, skipping upgrade: urllib3!=1.25.0,!=1.25.1,<1.26,>=1.21.1 in /opt/conda/lib/python3.7/site-packages (from requests->BentoML==0.9.0rc0+3.gcebf2015) (1.25.10)\u001b[0m\n", "\u001b[39mRequirement already satisfied, skipping upgrade: idna<3,>=2.5 in /opt/conda/lib/python3.7/site-packages (from requests->BentoML==0.9.0rc0+3.gcebf2015) (2.10)\u001b[0m\n", "\u001b[39mRequirement already satisfied, skipping upgrade: Mako in /opt/conda/lib/python3.7/site-packages (from alembic->BentoML==0.9.0rc0+3.gcebf2015) (1.1.3)\u001b[0m\n", "\u001b[39mRequirement already satisfied, skipping upgrade: python-editor>=0.3 in /opt/conda/lib/python3.7/site-packages (from alembic->BentoML==0.9.0rc0+3.gcebf2015) (1.0.4)\u001b[0m\n", "\u001b[39mRequirement already satisfied, skipping upgrade: async-timeout<4.0,>=3.0 in /opt/conda/lib/python3.7/site-packages (from aiohttp->BentoML==0.9.0rc0+3.gcebf2015) (3.0.1)\u001b[0m\n", "\u001b[39mRequirement already satisfied, skipping upgrade: yarl<2.0,>=1.0 in /opt/conda/lib/python3.7/site-packages (from aiohttp->BentoML==0.9.0rc0+3.gcebf2015) (1.5.1)\u001b[0m\n", "\u001b[39mRequirement already satisfied, skipping upgrade: attrs>=17.3.0 in /opt/conda/lib/python3.7/site-packages (from aiohttp->BentoML==0.9.0rc0+3.gcebf2015) (20.2.0)\u001b[0m\n", "\u001b[39mRequirement already satisfied, skipping upgrade: ply<4.0,>=3.4 in /opt/conda/lib/python3.7/site-packages (from thriftpy2>=0.4.0->py-zipkin->BentoML==0.9.0rc0+3.gcebf2015) (3.11)\u001b[0m\n", "\u001b[39mRequirement already satisfied, skipping upgrade: MarkupSafe>=0.23 in /opt/conda/lib/python3.7/site-packages (from Jinja2>=2.10.1->flask->BentoML==0.9.0rc0+3.gcebf2015) (1.1.1)\u001b[0m\n", "\u001b[39mRequirement already satisfied, skipping upgrade: typing-extensions>=3.7.4; python_version < \"3.8\" in /opt/conda/lib/python3.7/site-packages (from yarl<2.0,>=1.0->aiohttp->BentoML==0.9.0rc0+3.gcebf2015) (3.7.4.3)\u001b[0m\n", "\u001b[39mBuilding wheels for collected packages: BentoML\u001b[0m\n", "\u001b[39m Building wheel for BentoML (PEP 517): started\u001b[0m\n", "\b/\u001b[39m Building wheel for BentoML (PEP 517): finished with status 'done'\u001b[0m\n", "\u001b[39m Created wheel for BentoML: filename=BentoML-0.9.0rc0+3.gcebf2015-py3-none-any.whl size=3064091 sha256=d62cee806abd33902c47491b27f45eba7c38cfdb2a82beaf8c7917bddb910d5f\n", " Stored in directory: /root/.cache/pip/wheels/a0/45/41/62152db705af4ff47e7a3d6abf6247986eef4aa1b94a58d3b9\u001b[0m\n", "\u001b[39mSuccessfully built BentoML\u001b[0m\n", "\b/\u001b[39mInstalling collected packages: BentoML\n", " Attempting uninstall: BentoML\u001b[0m\n", "\u001b[39m Found existing installation: BentoML 0.9.0rc0\u001b[0m\n", "\b\\\u001b[39m Uninstalling BentoML-0.9.0rc0:\u001b[0m\n", "\b\\\u001b[39m Successfully uninstalled BentoML-0.9.0rc0\u001b[0m\n", "\b-\u001b[39mSuccessfully installed BentoML-0.9.0rc0+3.gcebf2015\u001b[0m\n", "\b/\u001b[39m ---> e8f9cf1be143\u001b[0m\n", "\u001b[39mStep 10/15 : ENV PORT 5000\u001b[0m\n", "\b|\u001b[39m ---> Running in 2fa4645bceef\u001b[0m\n", "\b\\\u001b[39m ---> 478de8907ddb\u001b[0m\n", "\u001b[39mStep 11/15 : EXPOSE $PORT\u001b[0m\n", "\u001b[39m ---> Running in 68b3a375d4e5\u001b[0m\n", "\b-\u001b[39m ---> 936de5a30f54\u001b[0m\n", "\u001b[39mStep 12/15 : COPY docker-entrypoint.sh /usr/local/bin/\u001b[0m\n", "\b|\u001b[39m ---> ca3a4a441847\u001b[0m\n", "\u001b[39mStep 13/15 : RUN chmod +x /usr/local/bin/docker-entrypoint.sh\u001b[0m\n", "\u001b[39m ---> Running in 9b1de5009288\u001b[0m\n", "\b-\u001b[39m ---> ca3c583728e0\u001b[0m\n", "\u001b[39mStep 14/15 : ENTRYPOINT [ \"docker-entrypoint.sh\" ]\u001b[0m\n", "\u001b[39m ---> Running in c715bc5a83c7\u001b[0m\n", "\b/\u001b[39m ---> 6e8c7877de08\u001b[0m\n", "\u001b[39mStep 15/15 : CMD [\"bentoml\", \"serve-gunicorn\", \"/bento\"]\u001b[0m\n", "\b|\u001b[39m ---> Running in e29ad2eed981\u001b[0m\n", "\b\\\u001b[39m ---> a27604aa4b60\u001b[0m\n", "\u001b[39mSuccessfully built a27604aa4b60\u001b[0m\n", "\u001b[39mSuccessfully tagged onnxresnet50:20200922124402_4DE94A\u001b[0m\n", "\u001b[32mFinished building onnxresnet50:20200922124402_4DE94A from OnnxResnet50:latest\u001b[0m\n" ] } ], "source": [ "!bentoml containerize OnnxResnet50:latest" ] }, { "cell_type": "code", "execution_count": 2, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "[2020-09-22 21:35:25,206] INFO - Starting BentoML API server in production mode..\n", "[2020-09-22 21:35:25,646] INFO - get_gunicorn_num_of_workers: 3, calculated by cpu count\n", "[2020-09-22 21:35:25 +0000] [1] [INFO] Starting gunicorn 20.0.4\n", "[2020-09-22 21:35:25 +0000] [1] [INFO] Listening at: http://0.0.0.0:5000 (1)\n", "[2020-09-22 21:35:25 +0000] [1] [INFO] Using worker: sync\n", "[2020-09-22 21:35:25 +0000] [12] [INFO] Booting worker with pid: 12\n", "[2020-09-22 21:35:25 +0000] [13] [INFO] Booting worker with pid: 13\n", "[2020-09-22 21:35:25 +0000] [14] [INFO] Booting worker with pid: 14\n", "[2020-09-22 21:35:25,935] WARNING - Using BentoML not from official PyPI release. In order to find the same version of BentoML when deploying your BentoService, you must set the 'core/bentoml_deploy_version' config to a http/git location of your BentoML fork, e.g.: 'bentoml_deploy_version = git+https://github.com/{username}/bentoml.git@{branch}'\n", "[2020-09-22 21:35:25,935] WARNING - Using BentoML not from official PyPI release. In order to find the same version of BentoML when deploying your BentoService, you must set the 'core/bentoml_deploy_version' config to a http/git location of your BentoML fork, e.g.: 'bentoml_deploy_version = git+https://github.com/{username}/bentoml.git@{branch}'\n", "[2020-09-22 21:35:25,959] WARNING - Saved BentoService bundle version mismatch: loading BentoService bundle create with BentoML version 0.9.0.pre, but loading from BentoML version 0.9.0.pre+3.gcebf2015\n", "[2020-09-22 21:35:25,959] WARNING - Saved BentoService bundle version mismatch: loading BentoService bundle create with BentoML version 0.9.0.pre, but loading from BentoML version 0.9.0.pre+3.gcebf2015\n", "[2020-09-22 21:35:25,959] WARNING - Saved BentoService Python version mismatch: loading BentoService bundle created with Python version 3.7.3, but current environment version is 3.7.9.\n", "[2020-09-22 21:35:25,960] WARNING - Saved BentoService Python version mismatch: loading BentoService bundle created with Python version 3.7.3, but current environment version is 3.7.9.\n", "[2020-09-22 21:35:25,988] WARNING - Using BentoML not from official PyPI release. In order to find the same version of BentoML when deploying your BentoService, you must set the 'core/bentoml_deploy_version' config to a http/git location of your BentoML fork, e.g.: 'bentoml_deploy_version = git+https://github.com/{username}/bentoml.git@{branch}'\n", "[2020-09-22 21:35:26,013] WARNING - Saved BentoService bundle version mismatch: loading BentoService bundle create with BentoML version 0.9.0.pre, but loading from BentoML version 0.9.0.pre+3.gcebf2015\n", "[2020-09-22 21:35:26,013] WARNING - Saved BentoService Python version mismatch: loading BentoService bundle created with Python version 3.7.3, but current environment version is 3.7.9.\n", "^C\n", "[2020-09-22 21:35:29 +0000] [1] [INFO] Handling signal: int\n", "[2020-09-22 21:35:29 +0000] [14] [INFO] Worker exiting (pid: 14)\n", "[2020-09-22 21:35:29 +0000] [13] [INFO] Worker exiting (pid: 13)\n", "[2020-09-22 21:35:29 +0000] [12] [INFO] Worker exiting (pid: 12)\n" ] } ], "source": [ "!docker run --rm -p 5000:5000 onnxresnet50:20200922124402_4DE94A" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Launch inference job from CLI\n", "\n", "BentoML cli supports loading and running a packaged model from CLI. With the DataframeInput adapter, the CLI command supports reading input Dataframe data from CLI argument or local csv or json files:" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "!bentoml run OnnxResnet50:latest predict --input-file dog.jpg" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Load saved BentoService\n", "\n", "bentoml.load is the API for loading a BentoML packaged model in python:" ] }, { "cell_type": "code", "execution_count": 6, "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "" ] }, "execution_count": 6, "metadata": {}, "output_type": "execute_result" } ], "source": [ "image = Image.open('dog.jpg')\n", "image" ] }, { "cell_type": "code", "execution_count": 11, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "[2020-09-22 14:37:28,411] WARNING - Using BentoML installed in `editable` model, the local BentoML repository including all code changes will be packaged together with saved bundle created, under the './bundled_pip_dependencies' directory of the saved bundle.\n", "[2020-09-22 14:37:28,430] WARNING - Saved BentoService bundle version mismatch: loading BentoService bundle create with BentoML version 0.9.0.pre, but loading from BentoML version 0.9.0.pre+3.gcebf2015\n", "[2020-09-22 14:37:28,838] INFO - Using default docker base image: `None` specified inBentoML config file or env var. User must make sure that the docker base image either has Python 3.7 or conda installed.\n", "[2020-09-22 14:37:28,866] INFO - Initializing onnxruntime InferenceSession from onnx file:'/Users/bozhaoyu/bentoml/repository/OnnxResnet50/20200922124402_4DE94A/OnnxResnet50/artifacts/model.onnx'\n" ] }, { "data": { "text/plain": [ "array([['Golden Retriever', 'Labrador Retriever', 'Sussex Spaniel',\n", " 'Vizsla', 'Otterhound'],\n", " ['Golden Retriever', 'Labrador Retriever', 'Sussex Spaniel',\n", " 'Vizsla', 'Otterhound'],\n", " ['Golden Retriever', 'Labrador Retriever', 'Sussex Spaniel',\n", " 'Vizsla', 'Otterhound'],\n", " ['Golden Retriever', 'Labrador Retriever', 'Sussex Spaniel',\n", " 'Vizsla', 'Otterhound']], dtype='