일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 |
- grafana on kubernetes
- blue-green
- headless service
- 딥레이서
- helm
- SAA 합격 후기
- 그라파나 시각화
- AWS 딥레이서
- 그라파나 대시보드
- livenessPorbe
- Aurora cluster
- Firelens
- github action 사용법
- EKS 클러스터
- kubernetes 동작 원리
- 딥레이서 보상함수
- terraform
- jenkins
- Prometheus install
- Solution Architecture
- LoadBalancer Controller
- 로드밸런서 컨트롤러
- 메탈LB
- Kubernets on Jenkins
- EFS CSI Driver
- 솔데스크
- 쿠버네티스
- 깃허브 액션
- 쿠버네티스 컴포넌트
- Kubernetes
mingming
솔데스크 Deepracer 경진대회 본문
솔데스크학원에서 6.12에 진행된 Deepracer 경진대회에 출전했습니다. 간단한 후기와 소감을 적어보려고 합니다.
[ Deepracer ]
아마존에서는 머신러닝과 클라우드 활성화를 위해, 카메라 영상 기반의 자율주행을 간단히 실험해볼 수 있는 딥레이서를 2018년말에 출시했습니다. 딥레이서는 클라우드 기반의 시물레이터(로보메이커)와 강화학습 기계(세이지메이커)를 제공해 쉽게 머신러닝을 접할 수 있는 서비스입니다.
[ 요금 정책 ]
AWS 에서 제공해주는 로보메이커와 세이지메이커로 강화학습을 진행하게 되는데
가격이 상당히 부담이 아닐 수 없습니다.
시간당 3.50 USD 아주 무시무시한 가격입니다. 프리티어 계정의 경우 1회에 한해서 10시간의 무료학습
기회가 주어지지만 충분한 학습을 시키기엔 부족한듯 합니다.
[ 트랙 정보 ]
AWS DeepRacer at re:Invent 2018 에 사용된 트랙을 사용하였습니다.
실제 콘솔에서 트랙을 고를 경우 역방향 주행을 하였습니다.
[ 보상함수 ]
저희 팀은 트랙의 위치를 좌표로 표시해 해당 좌표로 주행 시 크레딧을 부여하는 방식의 보상함수를 사용했습니다.
def reward_function(params):
center_variance = params["distance_from_center"] / params["track_width"]
track_width = params['track_width']
distance_from_center = params['distance_from_center']
all_wheels_on_track = params['all_wheels_on_track']
closest_waypoints = params["closest_waypoints"]
waypoints = params['waypoints']
heading = params['heading']
speed = params['speed']
abs_steering = abs(params['steering_angle'])
MAX_SPEED = 3
marker_1 = 0.12 * track_width
marker_2 = 0.24 * track_width
marker_3 = 0.36 * track_width
marker_4 = 0.48 * track_width
left_lane = [25,26,27,28,29,30,31,57,58,59,60,61,62,63,72,73,74,75,76,77,78,79,80,81,82,83,84,
101,102,103,104,105,106,127,128,129,130,131,159,160,161,162,163,164]
right_lane = [38,39,40,41,42,43,44,45,46,85,86,87,88,89,90,91,91,93,94,95]
center_lane = [0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,
32,33,34,35,36,37,46,47,48,49,50,51,52,53,54,55,56,64,65,66,67,68,69,70,71,
96,97,98,99,100,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,
132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158]
straight_lane = [1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,113,114,115,116,117,118,119,120,121,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153,154,155]
left_end_lane = [31,32,33,63,64,65,110,111,112,133,134,135,136,137,138]
right_end_lane = [45,46,47,48]
# after_closest_waypoints = params["closest_waypoints"][1]
# Calculate 3 markers that are at varying distances away from the center line
reward = 2.1
if all_wheels_on_track:
reward += 1
else:
reward -= 1
if closest_waypoints[1] in left_lane and params['is_left_of_center']:
reward += 1
elif closest_waypoints[1] in right_lane and not params['is_left_of_center']:
reward += 1
elif closest_waypoints[1] in center_lane and center_variance <0.4:
reward += 1
else:
reward -= 1
if closest_waypoints[1] in straight_lane and abs_steering < 5:
speed = MAX_SPEED
reward_distance=1
if distance_from_center <= marker_1:
reward_distance = 1.0
elif distance_from_center <= marker_2:
reward_distance = 0.7
elif distance_from_center <= marker_3:
reward_distance = 0.4
elif distance_from_center <= marker_4:
reward_distance = 0.1
else:
reward_distance = 1e-3 # likely crashed/ close to off track
reward_all = reward + reward_distance
ABS_STEERING_THRESHOLD = 15
if closest_waypoints[1] in straight_lane and abs_steering > 5:
reward_all *=0.8
elif closest_waypoints[1] in left_end_lane and abs_steering >10 and params['is_left_of_center']:
reward_all *= 0.8
elif closest_waypoints[1] in right_end_lane and abs_steering >10 and not params['is_left_of_center']:
reward_all *= 0.8
elif closest_waypoints[1] in center_lane and abs_steering > ABS_STEERING_THRESHOLD:
reward_all *= 0.6
else:
reward_all = reward_all
return float(reward_all)
[ 강화 학습 ]
![]() |
![]() |
빨간선 : Evaluating Average Percentage completation
초록선 : Reward Average
파란선 : Traing Average Percentage Completation
모델 생성 후 강화학습이 시작되면 일정 횟수의 Trainig 후 Evaluating 이 진행되는데 그때 얻은 결과값이 기록되게 됩니다.
여러번 강화학습을 반복하게되면 일정수준 이상으로 학습이 진행되지 않는걸 경험하실 수 있습니다.
그럴 땐 보상함수의 크레딧을 조금씩 조금 바꿔주면 좋습니다. 저희팀의 경우 왼쪽으로 코너를 돌 때 바퀴가 중앙선 기준 왼쪽에 위치한다면 더 많은 크레딧을 부여하는 방법으로 보상함수를 조금씩 수정하였습니다.
아래 링크는 AWS 기술문서에서 제공하는 예제 보상함수입니다.
예제 보상함수
[ 강화학습 영상 ]
[ 대회 후기 ]
조금 냉정한 후기를 적어보겠습니다.
1. RC CAR
수업하는 반을 기준으로 1개의 반에 개의 RC CAR를 제공해 주었습니다.
강화 학습한 모델 import 후 실제 트랙에서 테스트 해봤는데 카메라가 인식되지 않아 정상적인 테스트가 불가능했습니다.
실제 대회중 정상작동하는 하나의 RC CAR로 대회를 진행했습니다.
2. 대회환경
대회 준비에 아주 많은 공을 들여주신 것 같아 조금 감동이였습니다.
팀명패 , 명찰, 팀전용 좌석 등등 꽤 세심한 부분까지 신경써 주셨습니다. 또한 공정한 결과를 위해 많은 직원분들이
바쁘게 움직이며 고생해주셨습니다.
![]() |
![]() |
![]() |
![]() |
3. 아쉬운 점
사실 테스트 과정에서 RC CAR 이슈로 조금은 포기한 상태였습니다. 실제 주행 결과가 없으니 어떤 부분을 보완해야할지 막막하기도 했구요, 만약 처음부터 정상 작동하는 모델로 테스트를 했다면 조금 더 좋은 결과를 얻을 수 있지 않았을까 생각이 듭니다.
[ 글을 마치며 ]
그래도 처음 학원에 들어와 팀원들과 협동하여 이뤄낸 결과물이었다는 점에서 큰 의미가 있다고 생각이 듭니다.
서로 의견을 공유하고 방향성을 정하기 위해 회의하면서 한 팀이라는 소속감도 느낄 수 있었습니다.
'AWS Service' 카테고리의 다른 글
AWS SCT & DMS 이기종 데이터베이스 마이그레이션 (0) | 2024.02.10 |
---|---|
ECS 컨테이너 서비스 인프라 구축 및 Codepipeline 배포 자동화 (0) | 2023.08.21 |
MSA 리팩토링과 클라우드 마이그레이션 (1) | 2023.08.21 |
멀티 리전 & 하이브리드 환경 인프라 구축 (5) | 2023.08.09 |