machine_learning/ml_infrastructure/inference-server-performance/client/setup_locust.ipynb (219 lines of code) (raw):
{
"cells": [
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# Build a client container"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"%%bash\n",
"\n",
"export PROJECT_NAME='YOUR_PROJECT_NAME'\n",
"docker build -t locust_tester -f Dockerfile .\n",
"docker tag locust_tester gcr.io/${PROJECT_NAME}/locust_tester\n",
"docker push gcr.io/${PROJECT_NAME}/locust_tester"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# Create a Locust Cluster"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"%%writefile service_master.yaml\n",
"\n",
"kind: Service\n",
"apiVersion: v1\n",
"metadata:\n",
" name: locust-master\n",
" labels:\n",
" app: locust-master\n",
"spec:\n",
" ports:\n",
" - name: loc-master\n",
" port: 8089\n",
" targetPort: 8089\n",
" protocol: TCP\n",
" - name: loc-master-p1\n",
" port: 5557\n",
" targetPort: 5557\n",
" protocol: TCP\n",
" - name: loc-master-p2\n",
" port: 5558\n",
" targetPort: 5558\n",
" protocol: TCP\n",
" selector:\n",
" app: locust-master\n",
" type: LoadBalancer"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"!kubectl apply -f service_master.yaml"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"!kubectl get svc inference-server -o \"jsonpath={.spec['clusterIP']}\""
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"%%writefile deployment_master.yaml\n",
"\n",
"apiVersion: extensions/v1beta1\n",
"kind: Deployment\n",
"metadata:\n",
" name: locust-master\n",
" labels:\n",
" name: locust-master\n",
"spec:\n",
" replicas: 1\n",
" selector:\n",
" matchLabels:\n",
" app: locust-master\n",
" template:\n",
" metadata:\n",
" labels:\n",
" app: locust-master\n",
" spec:\n",
" containers:\n",
" - name: locust-master\n",
" image: gcr.io/sandbox-kathryn-ml/locust_tester\n",
" ports:\n",
" - name: loc-master\n",
" containerPort: 8089\n",
" protocol: TCP\n",
" - name: loc-master-p1\n",
" containerPort: 5557\n",
" protocol: TCP\n",
" - name: loc-master-p2\n",
" containerPort: 5558\n",
" protocol: TCP\n",
" command: [\"locust\",\"-f\",\"locust/trtis_grpc_client.py\"]\n",
" args: [\"--host\", \"CLUSTER_IP_TRTIS\", \"--master\"]\n",
" resources:\n",
" requests:\n",
" cpu: 200m"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"!kubectl get svc locust-master -o \"jsonpath={.spec['clusterIP']}\""
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"%%writefile deployment_slave.yaml\n",
"\n",
"apiVersion: extensions/v1beta1\n",
"kind: Deployment\n",
"metadata:\n",
" name: locust-slave\n",
" labels:\n",
" name: locust-slave\n",
"spec:\n",
" replicas: 3\n",
" selector:\n",
" matchLabels:\n",
" app: locust-slave\n",
" template:\n",
" metadata:\n",
" labels:\n",
" app: locust-slave\n",
" spec:\n",
" containers:\n",
" - name: locust-slave\n",
" image: gcr.io/sandbox-kathryn-ml/locust_tester\n",
" command: [\"locust\",\"-f\",\"locust/trtis_grpc_client.py\"]\n",
" args: [\"--slave\", \"--master-host=CLUSTER_IP_LOCUST_MASTER\"]\n",
" resources:\n",
" requests:\n",
" cpu: 100m"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"!kubectl apply -f deployment_master.yaml\n",
"!kubectl apply -f deployment_slave.yaml"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"!kubectl get svc"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"!kubectl get pods"
]
}
],
"metadata": {
"kernelspec": {
"display_name": "Python 3",
"language": "python",
"name": "python3"
},
"language_info": {
"codemirror_mode": {
"name": "ipython",
"version": 3
},
"file_extension": ".py",
"mimetype": "text/x-python",
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython3",
"version": "3.6.7"
}
},
"nbformat": 4,
"nbformat_minor": 2
}