This message was deleted.
# ask-for-help
s
This message was deleted.
f
Copy code
File "/Users/felixbukitvista/.local/share/virtualenvs/atlas-basic-dnn-BYqjRicC/lib/python3.11/site-packages/tensorflow/python/util/traceback_utils.py", line 153, in error_handler
    raise e.with_traceback(filtered_tb) from None
  File "/Users/felixbukitvista/.local/share/virtualenvs/atlas-basic-dnn-BYqjRicC/lib/python3.11/site-packages/tensorflow/python/saved_model/function_deserialization.py", line 335, in restored_function_body
    raise ValueError(
ValueError: Could not find matching concrete function to call loaded from the SavedModel. Got:
  Positional arguments (3 total):
    * <tf.Tensor 'inputs:0' shape=(1, 25) dtype=float64>
    * False
    * None
  Keyword arguments: {}

 Expected these arguments to match one of the following 2 option(s):

Option 1:
  Positional arguments (3 total):
    * TensorSpec(shape=(None, 25), dtype=tf.float32, name='input_2')
    * True
    * None
  Keyword arguments: {}

Option 2:
  Positional arguments (3 total):
    * TensorSpec(shape=(None, 25), dtype=tf.float32, name='input_2')
    * False
    * None
  Keyword arguments: {}
Copy code
During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/Users/felixbukitvista/.local/share/virtualenvs/atlas-basic-dnn-BYqjRicC/lib/python3.11/site-packages/bentoml/_internal/server/runner_app.py", line 244, in infer_batch
    batch_ret = await runner_method.async_run(
                ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/Users/felixbukitvista/.local/share/virtualenvs/atlas-basic-dnn-BYqjRicC/lib/python3.11/site-packages/bentoml/_internal/runner/runner.py", line 55, in async_run
    return await self.runner._runner_handle.async_run_method(self, *args, **kwargs)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/Users/felixbukitvista/.local/share/virtualenvs/atlas-basic-dnn-BYqjRicC/lib/python3.11/site-packages/bentoml/_internal/runner/runner_handle/local.py", line 62, in async_run_method
    return await anyio.to_thread.run_sync(
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/Users/felixbukitvista/.local/share/virtualenvs/atlas-basic-dnn-BYqjRicC/lib/python3.11/site-packages/anyio/to_thread.py", line 56, in run_sync
    return await get_async_backend().run_sync_in_worker_thread(
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/Users/felixbukitvista/.local/share/virtualenvs/atlas-basic-dnn-BYqjRicC/lib/python3.11/site-packages/anyio/_backends/_asyncio.py", line 2134, in run_sync_in_worker_thread
    return await future
           ^^^^^^^^^^^^
  File "/Users/felixbukitvista/.local/share/virtualenvs/atlas-basic-dnn-BYqjRicC/lib/python3.11/site-packages/anyio/_backends/_asyncio.py", line 851, in run
    result = context.run(func, *args)
             ^^^^^^^^^^^^^^^^^^^^^^^^
  File "/Users/felixbukitvista/.local/share/virtualenvs/atlas-basic-dnn-BYqjRicC/lib/python3.11/site-packages/bentoml/_internal/runner/runnable.py", line 143, in method
    return self.func(obj, *args, **kwargs)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/Users/felixbukitvista/.local/share/virtualenvs/atlas-basic-dnn-BYqjRicC/lib/python3.11/site-packages/bentoml/_internal/frameworks/tensorflow_v2.py", line 332, in run_method
    return _run_method(runnable_self, *args, **kwargs)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/Users/felixbukitvista/.local/share/virtualenvs/atlas-basic-dnn-BYqjRicC/lib/python3.11/site-packages/bentoml/_internal/frameworks/tensorflow_v2.py", line 310, in _run_method
    casted_args = cast_py_args_to_tf_function_args(
                  ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/Users/felixbukitvista/.local/share/virtualenvs/atlas-basic-dnn-BYqjRicC/lib/python3.11/site-packages/bentoml/_internal/frameworks/utils/tensorflow.py", line 173, in cast_py_args_to_tf_function_args
    parameters = [
                 ^
  File "/Users/felixbukitvista/.local/share/virtualenvs/atlas-basic-dnn-BYqjRicC/lib/python3.11/site-packages/bentoml/_internal/frameworks/utils/tensorflow.py", line 175, in <listcomp>
    name=s.name,
         ^^^^^^
AttributeError: 'bool' object has no attribute 'name'
2024-01-30T16:19:14+0700 [ERROR] [runner:atlas_tf_dnn:1] Exception in ASGI application
Traceback (most recent call last):
  File "/Users/felixbukitvista/.local/share/virtualenvs/atlas-basic-dnn-BYqjRicC/lib/python3.11/site-packages/bentoml/_internal/server/http/traffic.py", line 26, in __call__
    await <http://self.app|self.app>(scope, receive, send)
  File "/Users/felixbukitvista/.local/share/virtualenvs/atlas-basic-dnn-BYqjRicC/lib/python3.11/site-packages/opentelemetry/instrumentation/asgi/__init__.py", line 596, in __call__
    await <http://self.app|self.app>(scope, otel_receive, otel_send)
  File "/Users/felixbukitvista/.local/share/virtualenvs/atlas-basic-dnn-BYqjRicC/lib/python3.11/site-packages/bentoml/_internal/server/http/instruments.py", line 252, in __call__
    await <http://self.app|self.app>(scope, receive, wrapped_send)
  File "/Users/felixbukitvista/.local/share/virtualenvs/atlas-basic-dnn-BYqjRicC/lib/python3.11/site-packages/bentoml/_internal/server/http/access.py", line 126, in __call__
    await <http://self.app|self.app>(scope, receive, wrapped_send)
  File "/Users/felixbukitvista/.local/share/virtualenvs/atlas-basic-dnn-BYqjRicC/lib/python3.11/site-packages/starlette/middleware/exceptions.py", line 62, in __call__
    await wrap_app_handling_exceptions(<http://self.app|self.app>, conn)(scope, receive, send)
  File "/Users/felixbukitvista/.local/share/virtualenvs/atlas-basic-dnn-BYqjRicC/lib/python3.11/site-packages/starlette/_exception_handler.py", line 64, in wrapped_app
    raise exc
  File "/Users/felixbukitvista/.local/share/virtualenvs/atlas-basic-dnn-BYqjRicC/lib/python3.11/site-packages/starlette/_exception_handler.py", line 53, in wrapped_app
    await app(scope, receive, sender)
  File "/Users/felixbukitvista/.local/share/virtualenvs/atlas-basic-dnn-BYqjRicC/lib/python3.11/site-packages/starlette/routing.py", line 758, in __call__
    await self.middleware_stack(scope, receive, send)
  File "/Users/felixbukitvista/.local/share/virtualenvs/atlas-basic-dnn-BYqjRicC/lib/python3.11/site-packages/starlette/routing.py", line 778, in app
    await route.handle(scope, receive, send)
  File "/Users/felixbukitvista/.local/share/virtualenvs/atlas-basic-dnn-BYqjRicC/lib/python3.11/site-packages/starlette/routing.py", line 299, in handle
    await <http://self.app|self.app>(scope, receive, send)
  File "/Users/felixbukitvista/.local/share/virtualenvs/atlas-basic-dnn-BYqjRicC/lib/python3.11/site-packages/starlette/routing.py", line 79, in app
    await wrap_app_handling_exceptions(app, request)(scope, receive, send)
  File "/Users/felixbukitvista/.local/share/virtualenvs/atlas-basic-dnn-BYqjRicC/lib/python3.11/site-packages/starlette/_exception_handler.py", line 64, in wrapped_app
    raise exc
  File "/Users/felixbukitvista/.local/share/virtualenvs/atlas-basic-dnn-BYqjRicC/lib/python3.11/site-packages/starlette/_exception_handler.py", line 53, in wrapped_app
    await app(scope, receive, sender)
  File "/Users/felixbukitvista/.local/share/virtualenvs/atlas-basic-dnn-BYqjRicC/lib/python3.11/site-packages/starlette/routing.py", line 74, in app
    response = await func(request)
               ^^^^^^^^^^^^^^^^^^^
  File "/Users/felixbukitvista/.local/share/virtualenvs/atlas-basic-dnn-BYqjRicC/lib/python3.11/site-packages/bentoml/_internal/server/runner_app.py", line 305, in _request_handler
    payload = await infer(params)
              ^^^^^^^^^^^^^^^^^^^
Copy code
File "/Users/felixbukitvista/.local/share/virtualenvs/atlas-basic-dnn-BYqjRicC/lib/python3.11/site-packages/bentoml/_internal/marshal/dispatcher.py", line 182, in _func
    raise r
  File "/Users/felixbukitvista/.local/share/virtualenvs/atlas-basic-dnn-BYqjRicC/lib/python3.11/site-packages/bentoml/_internal/marshal/dispatcher.py", line 382, in outbound_call
    outputs = await self.callback(
              ^^^^^^^^^^^^^^^^^^^^
  File "/Users/felixbukitvista/.local/share/virtualenvs/atlas-basic-dnn-BYqjRicC/lib/python3.11/site-packages/bentoml/_internal/server/runner_app.py", line 244, in infer_batch
    batch_ret = await runner_method.async_run(
                ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/Users/felixbukitvista/.local/share/virtualenvs/atlas-basic-dnn-BYqjRicC/lib/python3.11/site-packages/bentoml/_internal/runner/runner.py", line 55, in async_run
    return await self.runner._runner_handle.async_run_method(self, *args, **kwargs)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/Users/felixbukitvista/.local/share/virtualenvs/atlas-basic-dnn-BYqjRicC/lib/python3.11/site-packages/bentoml/_internal/runner/runner_handle/local.py", line 62, in async_run_method
    return await anyio.to_thread.run_sync(
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/Users/felixbukitvista/.local/share/virtualenvs/atlas-basic-dnn-BYqjRicC/lib/python3.11/site-packages/anyio/to_thread.py", line 56, in run_sync
    return await get_async_backend().run_sync_in_worker_thread(
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/Users/felixbukitvista/.local/share/virtualenvs/atlas-basic-dnn-BYqjRicC/lib/python3.11/site-packages/anyio/_backends/_asyncio.py", line 2134, in run_sync_in_worker_thread
    return await future
           ^^^^^^^^^^^^
  File "/Users/felixbukitvista/.local/share/virtualenvs/atlas-basic-dnn-BYqjRicC/lib/python3.11/site-packages/anyio/_backends/_asyncio.py", line 851, in run
    result = context.run(func, *args)
             ^^^^^^^^^^^^^^^^^^^^^^^^
  File "/Users/felixbukitvista/.local/share/virtualenvs/atlas-basic-dnn-BYqjRicC/lib/python3.11/site-packages/bentoml/_internal/runner/runnable.py", line 143, in method
    return self.func(obj, *args, **kwargs)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/Users/felixbukitvista/.local/share/virtualenvs/atlas-basic-dnn-BYqjRicC/lib/python3.11/site-packages/bentoml/_internal/frameworks/tensorflow_v2.py", line 332, in run_method
    return _run_method(runnable_self, *args, **kwargs)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/Users/felixbukitvista/.local/share/virtualenvs/atlas-basic-dnn-BYqjRicC/lib/python3.11/site-packages/bentoml/_internal/frameworks/tensorflow_v2.py", line 310, in _run_method
    casted_args = cast_py_args_to_tf_function_args(
                  ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/Users/felixbukitvista/.local/share/virtualenvs/atlas-basic-dnn-BYqjRicC/lib/python3.11/site-packages/bentoml/_internal/frameworks/utils/tensorflow.py", line 173, in cast_py_args_to_tf_function_args
    parameters = [
                 ^
  File "/Users/felixbukitvista/.local/share/virtualenvs/atlas-basic-dnn-BYqjRicC/lib/python3.11/site-packages/bentoml/_internal/frameworks/utils/tensorflow.py", line 175, in <listcomp>
    name=s.name,
         ^^^^^^
AttributeError: 'bool' object has no attribute 'name'
Copy code
During handling of the above exception, another exception occurred:

  + Exception Group Traceback (most recent call last):
  |   File "/Users/felixbukitvista/.local/share/virtualenvs/atlas-basic-dnn-BYqjRicC/lib/python3.11/site-packages/uvicorn/protocols/http/h11_impl.py", line 404, in run_asgi
  |     result = await app(  # type: ignore[func-returns-value]
  |              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  |   File "/Users/felixbukitvista/.local/share/virtualenvs/atlas-basic-dnn-BYqjRicC/lib/python3.11/site-packages/uvicorn/middleware/proxy_headers.py", line 84, in __call__
  |     return await <http://self.app|self.app>(scope, receive, send)
  |            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  |   File "/Users/felixbukitvista/.local/share/virtualenvs/atlas-basic-dnn-BYqjRicC/lib/python3.11/site-packages/starlette/applications.py", line 123, in __call__
  |     await self.middleware_stack(scope, receive, send)
  |   File "/Users/felixbukitvista/.local/share/virtualenvs/atlas-basic-dnn-BYqjRicC/lib/python3.11/site-packages/starlette/middleware/errors.py", line 186, in __call__
  |     raise exc
  |   File "/Users/felixbukitvista/.local/share/virtualenvs/atlas-basic-dnn-BYqjRicC/lib/python3.11/site-packages/starlette/middleware/errors.py", line 164, in __call__
  |     await <http://self.app|self.app>(scope, receive, _send)
  |   File "/Users/felixbukitvista/.local/share/virtualenvs/atlas-basic-dnn-BYqjRicC/lib/python3.11/site-packages/bentoml/_internal/server/http/traffic.py", line 23, in __call__
  |     async with anyio.create_task_group():
  |   File "/Users/felixbukitvista/.local/share/virtualenvs/atlas-basic-dnn-BYqjRicC/lib/python3.11/site-packages/anyio/_backends/_asyncio.py", line 678, in __aexit__
  |     raise BaseExceptionGroup(
  | ExceptionGroup: unhandled errors in a TaskGroup (1 sub-exception)
  +-+---------------- 1 ----------------
    | Traceback (most recent call last):
    |   File "/Users/felixbukitvista/.local/share/virtualenvs/atlas-basic-dnn-BYqjRicC/lib/python3.11/site-packages/bentoml/_internal/frameworks/tensorflow_v2.py", line 300, in _run_method
    |     res = raw_method(*args, **kwargs)
    |           ^^^^^^^^^^^^^^^^^^^^^^^^^^^
    |   File "/Users/felixbukitvista/.local/share/virtualenvs/atlas-basic-dnn-BYqjRicC/lib/python3.11/site-packages/tensorflow/python/util/traceback_utils.py", line 153, in error_handler
    |     raise e.with_traceback(filtered_tb) from None
    |   File "/Users/felixbukitvista/.local/share/virtualenvs/atlas-basic-dnn-BYqjRicC/lib/python3.11/site-packages/tensorflow/python/saved_model/function_deserialization.py", line 335, in restored_function_body
    |     raise ValueError(
    | ValueError: Could not find matching concrete function to call loaded from the SavedModel. Got:
    |   Positional arguments (3 total):
    |     * <tf.Tensor 'inputs:0' shape=(1, 25) dtype=float64>
    |     * False
    |     * None
    |   Keyword arguments: {}
    | 
    |  Expected these arguments to match one of the following 2 option(s):
    | 
    | Option 1:
    |   Positional arguments (3 total):
    |     * TensorSpec(shape=(None, 25), dtype=tf.float32, name='input_2')
    |     * True
    |     * None
    |   Keyword arguments: {}
    | 
    | Option 2:
    |   Positional arguments (3 total):
    |     * TensorSpec(shape=(None, 25), dtype=tf.float32, name='input_2')
    |     * False
    |     * None
    |   Keyword arguments: {}
    | 
    | During handling of the above exception, another exception occurred:
    | 
    | Traceback (most recent call last):
    |   File "/Users/felixbukitvista/.local/share/virtualenvs/atlas-basic-dnn-BYqjRicC/lib/python3.11/site-packages/bentoml/_internal/server/http/traffic.py", line 26, in __call__
    |     await <http://self.app|self.app>(scope, receive, send)
    |   File "/Users/felixbukitvista/.local/share/virtualenvs/atlas-basic-dnn-BYqjRicC/lib/python3.11/site-packages/opentelemetry/instrumentation/asgi/__init__.py", line 596, in __call__
    |     await <http://self.app|self.app>(scope, otel_receive, otel_send)
    |   File "/Users/felixbukitvista/.local/share/virtualenvs/atlas-basic-dnn-BYqjRicC/lib/python3.11/site-packages/bentoml/_internal/server/http/instruments.py", line 252, in __call__
    |     await <http://self.app|self.app>(scope, receive, wrapped_send)
    |   File "/Users/felixbukitvista/.local/share/virtualenvs/atlas-basic-dnn-BYqjRicC/lib/python3.11/site-packages/bentoml/_internal/server/http/access.py", line 126, in __call__
    |     await <http://self.app|self.app>(scope, receive, wrapped_send)
    |   File "/Users/felixbukitvista/.local/share/virtualenvs/atlas-basic-dnn-BYqjRicC/lib/python3.11/site-packages/starlette/middleware/exceptions.py", line 62, in __call__
    |     await wrap_app_handling_exceptions(<http://self.app|self.app>, conn)(scope, receive, send)
    |   File "/Users/felixbukitvista/.local/share/virtualenvs/atlas-basic-dnn-BYqjRicC/lib/python3.11/site-packages/starlette/_exception_handler.py", line 64, in wrapped_app
    |     raise exc
    |   File "/Users/felixbukitvista/.local/share/virtualenvs/atlas-basic-dnn-BYqjRicC/lib/python3.11/site-packages/starlette/_exception_handler.py", line 53, in wrapped_app
    |     await app(scope, receive, sender)
    |   File "/Users/felixbukitvista/.local/share/virtualenvs/atlas-basic-dnn-BYqjRicC/lib/python3.11/site-packages/starlette/routing.py", line 758, in __call__
    |     await self.middleware_stack(scope, receive, send)
    |   File "/Users/felixbukitvista/.local/share/virtualenvs/atlas-basic-dnn-BYqjRicC/lib/python3.11/site-packages/starlette/routing.py", line 778, in app
    |     await route.handle(scope, receive, send)
    |   File "/Users/felixbukitvista/.local/share/virtualenvs/atlas-basic-dnn-BYqjRicC/lib/python3.11/site-packages/starlette/routing.py", line 299, in handle
    |     await <http://self.app|self.app>(scope, receive, send)
    |   File "/Users/felixbukitvista/.local/share/virtualenvs/atlas-basic-dnn-BYqjRicC/lib/python3.11/site-packages/starlette/routing.py", line 79, in app
    |     await wrap_app_handling_exceptions(app, request)(scope, receive, send)
    |   File "/Users/felixbukitvista/.local/share/virtualenvs/atlas-basic-dnn-BYqjRicC/lib/python3.11/site-packages/starlette/_exception_handler.py", line 64, in wrapped_app
    |     raise exc
    |   File "/Users/felixbukitvista/.local/share/virtualenvs/atlas-basic-dnn-BYqjRicC/lib/python3.11/site-packages/starlette/_exception_handler.py", line 53, in wrapped_app
    |     await app(scope, receive, sender)
    |   File "/Users/felixbukitvista/.local/share/virtualenvs/atlas-basic-dnn-BYqjRicC/lib/python3.11/site-packages/starlette/routing.py", line 74, in app
    |     response = await func(request)
    |                ^^^^^^^^^^^^^^^^^^^
    |   File "/Users/felixbukitvista/.local/share/virtualenvs/atlas-basic-dnn-BYqjRicC/lib/python3.11/site-packages/bentoml/_internal/server/runner_app.py", line 305, in _request_handler
    |     payload = await infer(params)
    |               ^^^^^^^^^^^^^^^^^^^
    |   File "/Users/felixbukitvista/.local/share/virtualenvs/atlas-basic-dnn-BYqjRicC/lib/python3.11/site-packages/bentoml/_internal/marshal/dispatcher.py", line 182, in _func
    |     raise r
    |   File "/Users/felixbukitvista/.local/share/virtualenvs/atlas-basic-dnn-BYqjRicC/lib/python3.11/site-packages/bentoml/_internal/marshal/dispatcher.py", line 382, in outbound_call
    |     outputs = await self.callback(
    |               ^^^^^^^^^^^^^^^^^^^^
    |   File "/Users/felixbukitvista/.local/share/virtualenvs/atlas-basic-dnn-BYqjRicC/lib/python3.11/site-packages/bentoml/_internal/server/runner_app.py", line 244, in infer_batch
    |     batch_ret = await runner_method.async_run(
    |                 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    |   File "/Users/felixbukitvista/.local/share/virtualenvs/atlas-basic-dnn-BYqjRicC/lib/python3.11/site-packages/bentoml/_internal/runner/runner.py", line 55, in async_run
    |     return await self.runner._runner_handle.async_run_method(self, *args, **kwargs)
    |            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    |   File "/Users/felixbukitvista/.local/share/virtualenvs/atlas-basic-dnn-BYqjRicC/lib/python3.11/site-packages/bentoml/_internal/runner/runner_handle/local.py", line 62, in async_run_method
    |     return await anyio.to_thread.run_sync(
    |            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    |   File "/Users/felixbukitvista/.local/share/virtualenvs/atlas-basic-dnn-BYqjRicC/lib/python3.11/site-packages/anyio/to_thread.py", line 56, in run_sync
    |     return await get_async_backend().run_sync_in_worker_thread(
    |            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    |   File "/Users/felixbukitvista/.local/share/virtualenvs/atlas-basic-dnn-BYqjRicC/lib/python3.11/site-packages/anyio/_backends/_asyncio.py", line 2134, in run_sync_in_worker_thread
    |     return await future
    |            ^^^^^^^^^^^^
    |   File "/Users/felixbukitvista/.local/share/virtualenvs/atlas-basic-dnn-BYqjRicC/lib/python3.11/site-packages/anyio/_backends/_asyncio.py", line 851, in run
    |     result = context.run(func, *args)
    |              ^^^^^^^^^^^^^^^^^^^^^^^^
    |   File "/Users/felixbukitvista/.local/share/virtualenvs/atlas-basic-dnn-BYqjRicC/lib/python3.11/site-packages/bentoml/_internal/runner/runnable.py", line 143, in method
    |     return self.func(obj, *args, **kwargs)
    |            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    |   File "/Users/felixbukitvista/.local/share/virtualenvs/atlas-basic-dnn-BYqjRicC/lib/python3.11/site-packages/bentoml/_internal/frameworks/tensorflow_v2.py", line 332, in run_method
    |     return _run_method(runnable_self, *args, **kwargs)
    |            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    |   File "/Users/felixbukitvista/.local/share/virtualenvs/atlas-basic-dnn-BYqjRicC/lib/python3.11/site-packages/bentoml/_internal/frameworks/tensorflow_v2.py", line 310, in _run_method
    |     casted_args = cast_py_args_to_tf_function_args(
    |                   ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    |   File "/Users/felixbukitvista/.local/share/virtualenvs/atlas-basic-dnn-BYqjRicC/lib/python3.11/site-packages/bentoml/_internal/frameworks/utils/tensorflow.py", line 173, in cast_py_args_to_tf_function_args
    |     parameters = [
    |                  ^
    |   File "/Users/felixbukitvista/.local/share/virtualenvs/atlas-basic-dnn-BYqjRicC/lib/python3.11/site-packages/bentoml/_internal/frameworks/utils/tensorflow.py", line 175, in <listcomp>
    |     name=s.name,
    |          ^^^^^^
    | AttributeError: 'bool' object has no attribute 'name'
    +------------------------------------
Copy code
2024-01-30T16:19:14+0700 [ERROR] [api_server:atlas_tf_dnn_service:2] Exception on /predict [POST] (trace=ebd10ae2a32a45661fa9d314d0ea91a6,span=380088c6a3e32e8c,sampled=0,service.name=atlas_tf_dnn_service)
Traceback (most recent call last):
  File "/Users/felixbukitvista/.local/share/virtualenvs/atlas-basic-dnn-BYqjRicC/lib/python3.11/site-packages/bentoml/_internal/server/http_app.py", line 343, in api_func
    output = await run_in_threadpool(api.func, *args)
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/Users/felixbukitvista/.local/share/virtualenvs/atlas-basic-dnn-BYqjRicC/lib/python3.11/site-packages/starlette/concurrency.py", line 42, in run_in_threadpool
    return await anyio.to_thread.run_sync(func, *args)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/Users/felixbukitvista/.local/share/virtualenvs/atlas-basic-dnn-BYqjRicC/lib/python3.11/site-packages/anyio/to_thread.py", line 56, in run_sync
    return await get_async_backend().run_sync_in_worker_thread(
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/Users/felixbukitvista/.local/share/virtualenvs/atlas-basic-dnn-BYqjRicC/lib/python3.11/site-packages/anyio/_backends/_asyncio.py", line 2134, in run_sync_in_worker_thread
    return await future
           ^^^^^^^^^^^^
  File "/Users/felixbukitvista/.local/share/virtualenvs/atlas-basic-dnn-BYqjRicC/lib/python3.11/site-packages/anyio/_backends/_asyncio.py", line 851, in run
    result = context.run(func, *args)
             ^^^^^^^^^^^^^^^^^^^^^^^^
  File "/Users/felixbukitvista/Productivity/Bukit-Vista/ml_models/atlas/atlas-basic-dnn/service.py", line 16, in predict
    return model_runner.run(data)
           ^^^^^^^^^^^^^^^^^^^^^^
  File "/Users/felixbukitvista/.local/share/virtualenvs/atlas-basic-dnn-BYqjRicC/lib/python3.11/site-packages/bentoml/_internal/runner/runner.py", line 52, in run
    return self.runner._runner_handle.run_method(self, *args, **kwargs)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/Users/felixbukitvista/.local/share/virtualenvs/atlas-basic-dnn-BYqjRicC/lib/python3.11/site-packages/bentoml/_internal/runner/runner_handle/remote.py", line 346, in run_method
    anyio.from_thread.run(
  File "/Users/felixbukitvista/.local/share/virtualenvs/atlas-basic-dnn-BYqjRicC/lib/python3.11/site-packages/anyio/from_thread.py", line 57, in run
    return async_backend.run_async_from_thread(func, args, token=token)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/Users/felixbukitvista/.local/share/virtualenvs/atlas-basic-dnn-BYqjRicC/lib/python3.11/site-packages/anyio/_backends/_asyncio.py", line 2174, in run_async_from_thread
    return f.result()
           ^^^^^^^^^^
  File "/Library/Frameworks/Python.framework/Versions/3.11/lib/python3.11/concurrent/futures/_base.py", line 456, in result
    return self.__get_result()
           ^^^^^^^^^^^^^^^^^^^
  File "/Library/Frameworks/Python.framework/Versions/3.11/lib/python3.11/concurrent/futures/_base.py", line 401, in __get_result
    raise self._exception
  File "/Users/felixbukitvista/.local/share/virtualenvs/atlas-basic-dnn-BYqjRicC/lib/python3.11/site-packages/anyio/_backends/_asyncio.py", line 2161, in task_wrapper
    return await func(*args)
           ^^^^^^^^^^^^^^^^^
  File "/Users/felixbukitvista/.local/share/virtualenvs/atlas-basic-dnn-BYqjRicC/lib/python3.11/site-packages/bentoml/_internal/runner/runner_handle/remote.py", line 242, in async_run_method
    raise RemoteException(
bentoml.exceptions.RemoteException: An unexpected exception occurred in remote runner atlas_tf_dnn: [500] Internal Server Error
2024-01-30T16:19:14+0700 [INFO] [api_server:atlas_tf_dnn_service:2] 127.0.0.1:58123 (scheme=http,method=POST,path=/predict,type=application/json,length=650) (status=500,type=application/json,length=2) 904.094ms (trace=ebd10ae2a32a45661fa9d314d0ea91a6,span=380088c6a3e32e8c,sampled=0,service.name=atlas_tf_dnn_service)
I have also tried Functional API, it's literally not working with Tensorflow model
j
the error here seems to suggest that the input signature of your model is not the same as what you pass in from
model_runner.run(data)
Copy code
|   Positional arguments (3 total):
    |     * <tf.Tensor 'inputs:0' shape=(1, 25) dtype=float64>
    |     * False
    |     * None
    |   Keyword arguments: {}
    | 
    |  Expected these arguments to match one of the following 2 option(s):
    | 
    | Option 1:
    |   Positional arguments (3 total):
    |     * TensorSpec(shape=(None, 25), dtype=tf.float32, name='input_2')
    |     * True
    |     * None
    |   Keyword arguments: {}
    | 
    | Option 2:
    |   Positional arguments (3 total):
    |     * TensorSpec(shape=(None, 25), dtype=tf.float32, name='input_2')
    |     * False
    |     * None
    |   Keyword arguments: {}
f
I didn't specify any input_signature when saving the model. Okay I'll try that, thanks @Jian Shen Yap
Copy code
model = keras.models.Sequential(
    (
        keras.layers.Dense(
            units=1,
            input_shape=(5,),
            dtype=tf.float64,
            use_bias=False,
            kernel_initializer=keras.initializers.Ones(),
        ),
    )
)
opt = keras.optimizers.Adam(0.002, 0.5)
model.compile(optimizer=opt, loss="binary_crossentropy", metrics=["accuracy"])
model.fit(train_x, train_y, epochs=10)

bentoml.tensorflow.save_model(
    model,
    "my_keras_model",
    signatures={"__call__": {"batchable": True, "batch_dim": 0}}
)
That's example code from your documentation, where can I specify input_signature if i'm using Sequential? I want to have pd.DataFrame or list of dicts as input to the model. @Jian Shen Yap
j
have you tried with the same data and same shape, you pass to your model directly?
the error also suggest its expecting a
float64
but you are passing in a
tf.float32
they may be compatible though, i'm not sure. maybe if you can try passing the exact data of this
data = scaler.transform(pd.DataFrame(data))
to your model's predict
f
In the end I tried bentoml.keras and it works flawlessly, I didn't even need to define any signatures. However I can't find a solution to saving tf.keras model or functional tf.keras model using bentoml.tensorflow and loading it using bentoml.tensorflow.
j
a model's input signature is determined by the model itself implicit IIRC.
would this work? https://docs.bentoml.org/en/latest/frameworks/keras.html using keras's integration
f
yes. I tried using:
Copy code
bentoml.keras.save_model(
    "atlas_dnn",
    model,
    custom_objects={"training_scaler": scaler},
    signatures={"__call__": {"batchable": True, "batch_dim": 0}},
)
Copy code
import bentoml
import bentoml.keras
from <http://bentoml.io|bentoml.io> import JSON, PandasDataFrame
import pandas as pd
from sklearn.preprocessing import StandardScaler
from dto import OutputDTO

model_ref = bentoml.keras.get("atlas_dnn:latest")
scaler: StandardScaler = model_ref.custom_objects["training_scaler"].set_output(transform="pandas")

model_runner = model_ref.to_runner()
svc = bentoml.Service("atlas_dnn_service", runners=[model_runner])

COLUMNS_ORDER = [
    "length_of_stay",
    "booking_window",
    "bw_z_score",
    "bw_robust_z_score",
    "weighted_booking_pace",
    "avg_MA90_ADR",
    "avg_MA180_ADR",
    "season",
    "active_unit_count",
    "lat",
    "lng",
    "dist_to_coastline_meters",
    "booking_pace_acceleration",
    "price_change",
    "rating",
    "accuracy",
    "checkin",
    "cleanliness",
    "communication",
    "location",
    "value",
    "rolling_rating",
    "review_count",
    "rolling_avg_reviews",
    "nab_length",
]

def transform_output(predictions: list[float]):
    df = pd.DataFrame(predictions, columns=["suggested_price"])
    df["suggested_price"] = df["suggested_price"] * 1000
    return df

@svc.api(input=PandasDataFrame(columns=COLUMNS_ORDER), output=JSON(pydantic_model=OutputDTO))
def predict(data):
    data = scaler.transform(pd.DataFrame(data)[COLUMNS_ORDER])
    predictions = model_runner.run(data)
    predictions_df = transform_output(predictions)
    return OutputDTO(suggested_price=predictions_df["suggested_price"].to_list())
it works unlike using bentoml.tensorflow. Here's the model:
Copy code
# Define the input layer with the shape of your training data
input_layer = tf.keras.layers.Input(shape=(len(X_train.columns),))

# Define each layer and connect it to the previous layer
x = tf.keras.layers.Dense(512, activation='relu', name="")(input_layer)
x = tf.keras.layers.Dropout(0.2)(x)
x = tf.keras.layers.Dense(256, activation='relu')(x)
x = tf.keras.layers.Dropout(0.2)(x)
x = tf.keras.layers.Dense(128, activation='relu')(x)
x = tf.keras.layers.Dropout(0.2)(x)
x = tf.keras.layers.Dense(64, activation='relu')(x)
x = tf.keras.layers.Dense(32, activation='relu')(x)

# Output layer
output_layer = tf.keras.layers.Dense(1)(x)

model = tf.keras.models.Model(inputs=input_layer, outputs=output_layer)

# Compile the model
model.compile(optimizer="adam", loss=['mse','mae'], metrics=['mse','mae'])
Copy code
model.fit(
      X_train_scaled,
      y_train_scaled,
      epochs=100,
      verbose=2,
      validation_data=(X_test_scaled, y_test_scaled)
  )