목록[AI] (68)
개발자로 후회없는 삶 살기
서론 OCR 프로젝트를 마무리하며, 프로젝트에서 가장 고민이었던 부분을 기록합니다. 본론 - 버전 이슈로 인한 학습 속도 차이 OCR 모델을 학습하기 위한 데이터 로딩 과정에서 geometry map과 score map을 구하는 시간이 굉장히 오래 걸려서 총 100장의 데이터인데 1에폭당 10분이 걸렸습니다. 실제로 학습되는 시간을 10초 내외였는데 로딩 과정에서만 시간이 오래 걸리는 문제가 있었습니다. -> 버전 차이 🚨 numpy나 opencv는 이미지 처리 및 수치 계산에 사용되는 라이브러리라서 최적화 개선에 따른 속도 차이 有 라이브러리들 간에 호환성 문제로 인한 성능 저하 그러던 중 캠퍼 한 분께서 버전을 낮추면 3배 가까운 속도 향상이 있다는 정보를 공유해 주셨고, 라이브러리 버전 차이로 인해..
서론대회로 수행하고 있는 EAST 모델은 데이터를 로드하는 과정에서 geometry map, scoremap을 만들기 때문에 적은 데이터임에도 불구하고 1에폭당 10분이 넘게 걸렸습니다. 이를 해결하는 과정을 기록합니다. 본론- 데이터 로딩 과정EAST 모델 데이터 셋의 __getitem__은 위처럼 전처리된 데이터를 반환하기에 로딩 시간이 굉장히 오래 걸렸습니다. - 최적화로 시간 줄이기1. 기본 소요 시간제공받은 베이스라인 코드는 1 에폭에 13분이 소요됩니다. 2. AMP 적용with torch.cuda.amp.autocast(): loss, extra_info = model.train_step(img, gt_score_map, gt_geo_map, roi_mask)optimizer.zero..
서론부스트캠프 대회에서 모델과 학습 파라미터는 고정한 채, 데이터 조작으로만 성능을 향상시켜야 하는 조건이 이었습니다. 현업에서도 데이터의 중요성이 강조되는 가운데 어떠한 데이터 처리로 성능을 향상시킬 수 있었는 지 단계별로 나열해 보겠습니다. 본론- 초기 조건학습 데이터 : 100장에폭 : 30모델 : base East 모델 - 모델 성능비교군으로 사용할 베이스 라인 모델을 잡기 위해 초기 조건으로 학습시킨 결과는 다음과 같습니다. 변인 통제를 정확히 하고 고정 베이스라인 모델에 다양한 데이터 처리를 하여 좋은 결과만 앙상블 조합 후보로 둘 것입니다. - 1차 데이터 클렌징1. 모든 기호와 단어는 뗀다.2. 스탬프는 지운다. 직인 말고도 단어가 적힌 스탬프도 지운다.3. ignore되는 것들은 지운다...
서론 레벨 2, 3 프로젝트를 병행하며 한 주를 회고합니다. 본론 - 팀원들과 원활한 협업을 위한 프로젝트 셋팅(Jira) 레벨 3 프로젝트 일정 관리를 위해 Jira를 팀에 제안했습니다. 하지만, 사용 경험이 부족했기에 팀원들에게 제 경험을 전달하기 위한 세미나를 진행했습니다. -> 자아 성찰 ✅ 요즘 부스트캠프 팀원들에게 상당히 많은 정보 공유를 하고 있는 것 같습니다. 촉박한 커리큘럼 내에서 시간을 할애하면서까지 세미나를 하고 자료를 만들고 있습니다. 과거의 저는 지식 공유를 블로그 혹은 구두로 하는 것이 전부였습니다. 팀원들에게 도움이 되는 것을 즐기고 있는 것을 새삼 깨달으며, 더 성숙한 개발자로 전진하고 있는 것 같아 기분이 좋습니다. - 데이터 제작 대회의 목적 -> 데이터 제작 대회? ✅ ..
서론 레벨 2 프로젝트가 끝이 나고 동시에 부캠의 50%가 지났습니다. 절반까지 열심히 달려오느라 수고했다고 팀원들과 격려하고 있습니다. 본론 - GPU Pool로 알게 된 로컬, 서버, 원격, 배포의 개념 로컬 : 작업을 하는 공간으로 새로운 기능을 만들거나 버그를 잡을 때 실제 코드를 작성하는 곳 깃허브 원격 : 로컬에서 작업한 내용을 배포하는 곳으로 서버와 로컬의 연결 다리 서버 : 원격의 내용을 반영하여 실제 서비스를 운영하는 곳 배포의 개념은 로컬에서 기능이 다 완료됐으니 운영하자! 였습니다. 웹 어플리케이션에서는 이러한 것을 물리 서버와 WAS가 자동으로 너무 잘해줘서 자연스럽게 이해가 됐었는 데 컴퓨터 2대와 깃허브만 받은 채로 직접 위 구조를 만들어 본 것은 처음입니다. 이번에 아주 값진 ..
서론딥러닝 모델의 학습/추론 프로세스에는 많은 단계가 포함됩니다. 각 실험의 반복이 빠를수록 제한된 시간과 리소스로 더 효율적인 성능 최적화를 할 수 있습니다. 아래 과정으로 성능 최적화 기법을 적용해 보겠습니다. 본론- 모델 설정backbone : vit-base_path16_224input size : [224, 224]epoch : 1무거운 모델이 성능 면에서 비교하기 쉬울 것 같아서 VIT로 선택했습니다. 1 에폭만 돌려서 학습 속도의 차이를 확인해 보겠습니다. - 기본 Baseline 코드기법을 적용하지 않은 학습 결과입니다. 1 에폭이 동작한 시간과 사용한 메모리 양을 나타내었습니다. - With AMP-> AMP란?모델의 파라미터를 32-bit가 아닌 16-bit로 표현하여 배치 사이즈를 늘..
서론사설망에서 서버 간 통신으로 GPU 풀을 이용하는 과정을 기록합니다. 본론-> 깃허브https://github.com/boostcampaitech6/level2-objectdetection-cv-05/pull/20 feat: gpu pool 기능 구현 by SangBeom-Hahn · Pull Request #20 · boostcampaitech6/level2-objectdetection-cv-05Overview live 커스텀 코드에 적용할 수 있는 gpu pool 시스템을 구현했습니다. Change log logger/ support/ utils/ consumer.py publisher.py To Reviewer support/ 에 publisher의 메세지 큐를 제어할 커넥션 연결 컴포넌트와gi..
서론 객체 탐지 대회 도중 사용한 mmdetection 라이브러리 활용 경험을 회고합니다. 본론 - mmdetection의 편리한 학습 파이프라인 강의에서는 mmdetection을 코드 조각으로 조합해서 원하는 모델을 만들 수 있다고 하였습니다. 당시에는 매우 추상적이라서 '유용한 기술이겠다'라고 생각만 하고 넘어갔는데 실제로 만들어 보니 굉장한 기술력을 가질 수 있다는 것을 체감했습니다. configs/faster_rcnn 수정 _base_/models 수정 datasets 수정 _base_/datasets/coco_detection 수정 위 4가지를 테스크에 맞게 수정하면 원하는 모델을 만들 수 있을 뿐만 아니라, 학습, 테스트 파이프라인 자체를 커스터마이즈 할 수 있습니다. 앞으로 주기적으로 업데이..