추론요청 시나리오 작성 모듈과 라운드로빈으로 요청을 엣지장비들에 전송하는 스케줄러 구현#35
추론요청 시나리오 작성 모듈과 라운드로빈으로 요청을 엣지장비들에 전송하는 스케줄러 구현#35kh3654po wants to merge 13 commits intoddps-lab:mainfrom
Conversation
hyu-leeky
left a comment
There was a problem hiding this comment.
시작점으로 괜찮아 보인다. 실험을 우선 시작해보자.
| def create_inference_request_workload(req_time): | ||
| requests = [[] for _ in range(req_time)] | ||
| for (model_name, req_per_sec) in inference_request_info: | ||
| workloads = random.poisson(lam=req_per_sec, size=req_time) |
There was a problem hiding this comment.
for 문에서 req_time 만큼 실행하고 poission 의 size 가 req_time 인게 잘 이해가 안되네. 결과물이 어떤 형태일지 예를 들어주면 좋을것 같아.
There was a problem hiding this comment.
req_time은 몇초동안 요청을 받을지를 나타냅니다. 예를 들어 3이라면 3초동안의 요청 정보를 만들어줍니다.
결과는 리스트로 예시는 아래와 같습니다. 각각의 리스트는 1초동안 들어오는 요청량입니다.
# create_inference_request_workload(3)
['mobilenet_v1', 'inception_v3', 'mobilenet_v1', 'mobilenet_v2', 'mobilenet_v1', 'mobilenet_v1', 'mobilenet_v2', 'mobilenet_v2', 'mobilenet_v1', 'mobilenet_v1', 'mobilenet_v1', 'mobilenet_v2', 'mobilenet_v1', 'mobilenet_v2', 'yolo_v5', 'mobilenet_v1', 'inception_v3']
['mobilenet_v1', 'mobilenet_v1', 'mobilenet_v1', 'mobilenet_v1', 'mobilenet_v1', 'mobilenet_v1', 'mobilenet_v1', 'mobilenet_v1', 'inception_v3', 'mobilenet_v1']
['mobilenet_v1', 'mobilenet_v1', 'mobilenet_v1', 'yolo_v5', 'mobilenet_v1', 'mobilenet_v1', 'mobilenet_v1', 'mobilenet_v2', 'yolo_v5', 'inception_v3', 'inception_v3', 'mobilenet_v1', 'yolo_v5', 'mobilenet_v1']
|
|
||
|
|
||
| # 추론요청 할 각 모델의 모듈을 저장. | ||
| def regist_enable_model_modules(models_to_infer): |
There was a problem hiding this comment.
이 함수는 엣지 장비에서 실행이 되는거야? 아니면 요청을 보내느곳에서 실행이야? 파일 이름을 봐서는 요청을 보내는 곳 혹은 스케줄러 일것 같은데 함수에서 하는 일은 모델 로드 인것 같아서 헷갈리네.
There was a problem hiding this comment.
스케줄러코드는 요청을 전달하는 역할만 합니다. 코드상의 edges_info에 따라 특정 모델에 대한 요청을 해당 모델이 로드된 장비들에 라운드로빈으로 전달합니다. 해당함수(regist_enable_model_modules)는 모델마다 요청을 전송하는 함수(run_bench)가 있는데 이 함수를 호출하기위해 필요한 모델의 모듈을 저장하는데 쓰입니다.
|
스케줄러 코드를 정리해서 올렸습니다. 각 기능단위별로 주석을 달았습니다. |
|
cuda코드와 c, go 코드를 올렸습니다. cuda코드는 동일하고 c와 go 코드는 각 문법에 맞춰 같은 작업을 수행하도록 하였습니다. 연산할 행렬 두개를 만들고 이를 각 쓰레드에 전달해 cuda코드에 정의된 maxmul함수를 호출하도록 합니다. 결과로는 쓰레드 번호와 연산이 잘되었는지 확인하기위해 행렬의 첫번째인자를 출력하고 쓰레드가 시작한 시간, 종료된 시간, 처리시간을 출력합니다. |
No description provided.