You can not select more than 25 topics Topics must start with a chinese character,a letter or number, can include dashes ('-') and can be up to 35 characters long.

client_mul_process.py 3.9 kB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103
  1. # Copyright 2021 Huawei Technologies Co., Ltd
  2. #
  3. # Licensed under the Apache License, Version 2.0 (the "License");
  4. # you may not use this file except in compliance with the License.
  5. # You may obtain a copy of the License at
  6. #
  7. # http://www.apache.org/licenses/LICENSE-2.0
  8. #
  9. # Unless required by applicable law or agreed to in writing, software
  10. # distributed under the License is distributed on an "AS IS" BASIS,
  11. # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  12. # See the License for the specific language governing permissions and
  13. # limitations under the License.
  14. # ============================================================================
  15. """client example of add"""
  16. import json
  17. import requests
  18. import numpy as np
  19. from mindspore_serving.client import Client
  20. def check_result(result, y_data_list):
  21. """check grpc output result"""
  22. assert len(result) == len(y_data_list)
  23. for result_item, y_data in zip(result, y_data_list):
  24. assert (result_item["y"] == y_data).all()
  25. def run_add_common():
  26. """invoke servable add method add_common"""
  27. client = Client("localhost", 5500, "add", "add_common")
  28. instances = []
  29. instance_count = 3
  30. y_data_list = []
  31. for i in range(instance_count):
  32. x1 = np.asarray([[1.1, 2.2], [3.3, 4.4]]).astype(np.float32) * (i + 1)
  33. x2 = np.asarray([[5.5, 6.6], [7.7, 8.8]]).astype(np.float32) * (i + 1)
  34. y_data_list.append(x1 + x2)
  35. instances.append({"x1": x1, "x2": x2})
  36. result = client.infer(instances)
  37. print(result)
  38. check_result(result, y_data_list)
  39. def run_add_cast():
  40. """invoke servable add method add_cast"""
  41. client = Client("localhost", 5500, "add", "add_cast")
  42. instances = []
  43. y_data_list = []
  44. x1 = np.ones((2, 2), np.int32)
  45. x2 = np.ones((2, 2), np.int32)
  46. instances.append({"x1": x1, "x2": x2})
  47. y_data_list.append((x1 + x2).astype(np.float32))
  48. result = client.infer(instances)
  49. print(result)
  50. check_result(result, y_data_list)
  51. def post_restful(ip, restful_port, servable_name, method_name, json_instances, version_number=None):
  52. """construct post restful request"""
  53. instances_map = {"instances": json_instances}
  54. post_payload = json.dumps(instances_map)
  55. print("request:", post_payload[:200])
  56. if version_number is not None:
  57. request_url = f"http://{ip}:{restful_port}/model/{servable_name}/version/{version_number}:{method_name}"
  58. result = requests.post(request_url, data=post_payload)
  59. else:
  60. request_url = f"http://{ip}:{restful_port}/model/{servable_name}:{method_name}"
  61. result = requests.post(request_url, data=post_payload)
  62. print("result", result.text[:200])
  63. result = json.loads(result.text)
  64. return result
  65. def check_number_result(result, y_data_list, output_name="y"):
  66. """check restful output result"""
  67. result = result["instances"]
  68. assert len(result) == len(y_data_list)
  69. for result_item, expected_item in zip(result, y_data_list):
  70. result_item = np.array(result_item[output_name])
  71. print("result", result_item)
  72. print("expect:", expected_item)
  73. assert result_item.shape == expected_item.shape
  74. assert (np.abs(result_item - expected_item) < 0.001).all()
  75. def run_add_restful():
  76. """run restful request: invoke servable add method add_common"""
  77. # Client
  78. print("begin to run add restful.")
  79. y_data_list = []
  80. instances = []
  81. x1 = np.asarray([[1.1, 2.2], [3.3, 4.4]]).astype(np.float32)
  82. x2 = np.asarray([[5.5, 6.6], [7.7, 8.8]]).astype(np.float32)
  83. y_data_list.append((x1 + x2).astype(np.float32))
  84. instances.append({"x1": x1.tolist(), "x2": x2.tolist()})
  85. result = post_restful("localhost", 15500, "add", "add_common", instances)
  86. check_number_result(result, y_data_list)
  87. if __name__ == '__main__':
  88. run_add_common()
  89. run_add_cast()
  90. run_add_restful()

A lightweight and high-performance service module that helps MindSpore developers efficiently deploy online inference services in the production environment.