Slackbot
10/05/2022, 7:31 PMlarme (shenyang)
10/05/2022, 7:39 PMYakir Saadia
10/05/2022, 7:40 PMlarme (shenyang)
10/05/2022, 7:45 PMbentoml_cli.worker.runner
. This will isolate the runner processYakir Saadia
10/05/2022, 7:47 PMlarme (shenyang)
10/05/2022, 7:52 PMYakir Saadia
10/05/2022, 7:53 PMYakir Saadia
10/05/2022, 7:54 PMlarme (shenyang)
10/05/2022, 8:00 PMlarme (shenyang)
10/05/2022, 8:02 PMYakir Saadia
10/05/2022, 8:05 PMYakir Saadia
10/05/2022, 8:05 PMYakir Saadia
10/05/2022, 8:07 PMYakir Saadia
10/05/2022, 8:08 PMlarme (shenyang)
10/05/2022, 8:27 PMYakir Saadia
10/05/2022, 8:43 PMlarme (shenyang)
10/05/2022, 8:49 PMYakir Saadia
10/05/2022, 8:50 PMlarme (shenyang)
10/05/2022, 8:51 PMYakir Saadia
10/05/2022, 8:51 PMYakir Saadia
10/05/2022, 8:53 PMlarme (shenyang)
10/05/2022, 8:53 PMYakir Saadia
10/05/2022, 8:54 PMlarme (shenyang)
10/05/2022, 8:58 PMYakir Saadia
10/05/2022, 9:01 PMlarme (shenyang)
10/05/2022, 9:03 PMlarme (shenyang)
10/05/2022, 9:04 PMlarme (shenyang)
10/05/2022, 9:04 PMYakir Saadia
10/05/2022, 9:05 PMlarme (shenyang)
10/05/2022, 9:08 PMYakir Saadia
10/06/2022, 1:28 AMSean
10/06/2022, 8:21 AMYakir Saadia
10/06/2022, 9:37 AMsauyon
10/06/2022, 10:12 AMYakir Saadia
10/06/2022, 10:15 AMsauyon
10/06/2022, 10:16 AMYakir Saadia
10/06/2022, 10:17 AMsauyon
10/06/2022, 10:18 AMYakir Saadia
10/06/2022, 10:18 AMsauyon
10/06/2022, 10:19 AMYakir Saadia
10/06/2022, 10:19 AMsauyon
10/06/2022, 10:28 AMYakir Saadia
10/06/2022, 10:29 AMYakir Saadia
10/06/2022, 10:29 AMsauyon
10/06/2022, 10:29 AMlarme (shenyang)
10/06/2022, 10:30 AMYakir Saadia
10/06/2022, 10:31 AMdef pytorch_predict(self, d):
return [x.pandas().xyxy for x in self(d).tolist()]
sauyon
10/06/2022, 1:19 PMtype(<your runner>.<method>.run(...))
?Yakir Saadia
10/06/2022, 1:20 PMYakir Saadia
10/06/2022, 1:22 PMYakir Saadia
10/06/2022, 1:25 PMYakir Saadia
10/06/2022, 1:27 PMsauyon
10/06/2022, 1:27 PMYakir Saadia
10/06/2022, 1:28 PMsauyon
10/06/2022, 1:28 PMsauyon
10/06/2022, 1:28 PMYakir Saadia
10/06/2022, 1:28 PMYakir Saadia
10/06/2022, 1:29 PMsauyon
10/06/2022, 1:31 PMYakir Saadia
10/06/2022, 1:31 PMYakir Saadia
10/06/2022, 1:39 PMYakir Saadia
10/06/2022, 1:39 PMsauyon
10/06/2022, 1:40 PMYakir Saadia
10/06/2022, 1:45 PMsauyon
10/06/2022, 1:48 PMsauyon
10/06/2022, 1:49 PMYakir Saadia
10/06/2022, 1:51 PMYakir Saadia
10/06/2022, 1:51 PMYakir Saadia
10/06/2022, 1:52 PMsauyon
10/06/2022, 1:55 PMfrom bentoml._internal.runner.strategy import Strategy
from bentoml._internal.runner.strategy import DefaultStrategy
import math
class NxStrategy(Strategy):
n = 2
@classmethod
def get_worker_count(cls, runnable_class, resource_request):
return cls.n * DefaultStrategy.get_worker_count(
runnable_class, resource_request
)
@classmethod
def get_worker_env(
cls,
runnable_class,
resource_request,
worker_index,
):
pseudo_worker_index = math.floor(worker_index / cls.n)
return DefaultStrategy.get_worker_env(
runnable_class, resource_request, pseudo_worker_index
)
object.__setattr__(<your runner>, "scheduling_strategy", NxStrategy)
This is the code you can put into your service; it's a bit hacky because we don't really support custom strategies at the moment, at least for default runners, but it should hopefully work.Yakir Saadia
10/06/2022, 1:57 PMsauyon
10/06/2022, 1:57 PMn
times the number of runner processes that would normally be spawned by our default strategy; basically higher n
should hopefully speed things up, as long as you have enough memory.
The 429 error is something that happens when our runner can't keep up, for one reason or another, so spawning more runner processes should help with saturating your resources and avoiding that bottleneck.Yakir Saadia
10/06/2022, 1:57 PMYakir Saadia
10/06/2022, 1:58 PMYakir Saadia
10/06/2022, 1:59 PMsauyon
10/06/2022, 2:00 PMsauyon
10/06/2022, 2:00 PMYakir Saadia
10/06/2022, 2:03 PMsauyon
10/06/2022, 2:04 PM