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 }