Skip to content

추론요청 시나리오 작성 모듈과 라운드로빈으로 요청을 엣지장비들에 전송하는 스케줄러 구현#35

Open
kh3654po wants to merge 13 commits intoddps-lab:mainfrom
kh3654po:main
Open

추론요청 시나리오 작성 모듈과 라운드로빈으로 요청을 엣지장비들에 전송하는 스케줄러 구현#35
kh3654po wants to merge 13 commits intoddps-lab:mainfrom
kh3654po:main

Conversation

@kh3654po
Copy link
Contributor

No description provided.

@kh3654po kh3654po self-assigned this May 14, 2023
Copy link
Member

@hyu-leeky hyu-leeky left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

시작점으로 괜찮아 보인다. 실험을 우선 시작해보자.

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)
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

for 문에서 req_time 만큼 실행하고 poission 의 size 가 req_time 인게 잘 이해가 안되네. 결과물이 어떤 형태일지 예를 들어주면 좋을것 같아.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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):
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

이 함수는 엣지 장비에서 실행이 되는거야? 아니면 요청을 보내느곳에서 실행이야? 파일 이름을 봐서는 요청을 보내는 곳 혹은 스케줄러 일것 같은데 함수에서 하는 일은 모델 로드 인것 같아서 헷갈리네.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

스케줄러코드는 요청을 전달하는 역할만 합니다. 코드상의 edges_info에 따라 특정 모델에 대한 요청을 해당 모델이 로드된 장비들에 라운드로빈으로 전달합니다. 해당함수(regist_enable_model_modules)는 모델마다 요청을 전송하는 함수(run_bench)가 있는데 이 함수를 호출하기위해 필요한 모델의 모듈을 저장하는데 쓰입니다.

@kh3654po
Copy link
Contributor Author

스케줄러 코드를 정리해서 올렸습니다. 각 기능단위별로 주석을 달았습니다.

@kh3654po
Copy link
Contributor Author

cuda코드와 c, go 코드를 올렸습니다. cuda코드는 동일하고 c와 go 코드는 각 문법에 맞춰 같은 작업을 수행하도록 하였습니다. 연산할 행렬 두개를 만들고 이를 각 쓰레드에 전달해 cuda코드에 정의된 maxmul함수를 호출하도록 합니다. 결과로는 쓰레드 번호와 연산이 잘되었는지 확인하기위해 행렬의 첫번째인자를 출력하고 쓰레드가 시작한 시간, 종료된 시간, 처리시간을 출력합니다.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants