2022년 돌아보기
23년 이전 글/일상이야기

2022년 돌아보기

시작하는 글

빈지노의 노래 ' If I die tomorrow ' 노래 2절에는 이런 가사가 있습니다

고개를 45도 기울여 담배 연기와 함께 품은 기억력
추억을 소리처럼 키우면 눈을 감아도 보이는 theater

시간은 유연하게 휘어져 과거로 스프링처럼 휘어져
아주 작고 작았던 미니어쳐 시절을 떠올리는 건 껌처럼 쉬워져

빨주노초 물감을 덜어 하얀색 종이 위를 총처럼 겨눴던
어린 화가의 경력은 뜬금없게도 힙합에 눈이 멀어

멈춰버렸지만 전혀 두렵지 않았어 cuz I didn`t give a fuck
about 남의 시선, cuz life is like 나 홀로 걸어가는  터널

Bold체로 적힌 부분을 말하고자 앞 뒤를 다 적었네요.

 

뜬금없게도 인공지능에 눈이 멀어

10년 이상 직업군인으로 복무한 사람은 전역 전에 약 10개월의 전직 교육을 받을 수 있는 시간이 주어지는데, 이걸 신청함으로써 사회에 첫발을 내딛게 되었습니다.

이전에 복무하던 병과는 방공, 보병으로 컴퓨터와는 전혀 관련없는 과여서 전혀 프로그래밍 경험이 없었고, 제대로된 프로젝트조차 진행해본 경험이 없었습니다.

그렇지만 유일하게 믿는 구석이 하나 있었는데요. 

부대에 코로나 환자가 발생해서 일주일 정도 재택을 한 적이 있었는데, 그때 파이썬으로 한국 주식 정보를 트리맵으로 시각화해서 웹에 배포를 했던, 저만의 프로젝트를 시도해서 성공했었는데 그 성취감이 이루 말할 수가 없었습니다.

이를 계기로 약 1년 간 준비를 한다면 정말 큰 변화를 만들 수 있을 것이라 생각하고, 전역을 결심하게 되었죠.

전역 당시에 챙겨나온 것이라면

- 사이버 학교 통번역전공 학사 학위

- 마케팅 MBA 석사 학위

정도가 다네요, 흔한 정보처리기사, Toeic 아무것도 없이,

2021년 10월 1일 전직교육에 들어가게 됩니다.

자 이제 시간은 주어졌고, 공부도 기왕 혼자하는 것 보단 같이 하고자 공부할 곳을 찾아보게 됩니다.

 

낙방, 낙방, 합격

부트캠프를 정말 많이 알아봤습니다. 내일배움카드 하나만 믿고 네이버 부스트캠프, 우아한테크코스, 구글 머신러닝 부트캠프, 42서울 등 정말 많은 곳의 문을 두드렸습니다.(싸피는 나이 조건 때문에 문도 두드리지 못했죠)

그러나 초심자가 코딩테스트를 통과할리는 없었고, 기초 상식없이 대체로 낙방하게 되었습니다. 사실 붙는다 하더라도 부산에 거주중인 상황으로 합격하게 되더라도 그 이후 상황을 준비하기도 어렵긴 마찬가지였어요.

이 때, 마침 아이펠 인공지능 과정이 부산에도 열리는 것을 확인하게 되었습니다. 당시 다른 캠퍼스에선 쏘카에 간 분도 계신걸로 홍보를 확인했었고, 코딩하면서 교육받을 수 있는 프로그램이 있어서 되게 괜찮은 프로그램이라 생각했었습니다.

코딩테스트 없이, 간단한 면접 절차를 거쳐서 드디어 부산 1기로 합격해서 공부를 시작하게 됩니다.

 

아이펠 인공지능과정 부산 1기(21. 12 ~ 22. 6)

이걸 빼고는 제 22년의 반을 이야기 안할 수가 없겠네요.

당시 코로나가 여전히 활개를 치고 있던 상황이라 어딘가 집합해서 학습을 진행하기 어려운 상황이었는데요. 아이펠 과정에선 인터넷으로 학습할 컨텐츠가 준비되어 있었기 때문에 이러한 부분에 어려움은 없었고, 사람간의 소통은 게더타운이 큰 역할을 해줬습니다.

또한 LMS라는 자체 클라우스 시스템이 있어서, 여기에서 학습하는 코드를 돌려보기도 하고, 학습 컨텐츠가 끝나고 나면 제가 하고 싶은 코드를 해당 클라우드를 통해 돌려보기도 했습니다. GPU는 당시 t4로, 나름 쓸만한 성능이었습니다.

기본 인공지능 학습 과정 외에도, 같이 cs231을 공부하거나, 알고리즘도 보충해서 공부하는 등 하루 하루를 정말 꽉채워서 공부했던 기억이 납니다.

당시 주말에는 평일에 소화하지 못한 학습 활동을 하거나, 학습한 내용을 바탕으로 제것으로 만드는 시간을 많이 가졌습니다. 특히 제 것으로 만드는 과정은 실전(Kaggle)등의 대회를 통해서 특히 확실히 다질 수 있었던 계기가 되었던 것 같습니다.

아이펠 학습간 진행했던 내용들인데, 지금 보면 부끄러워서 못볼 내용들이 많을 것 같아서 열어보기 두렵네요

https://github.com/dlfrnaos19/Aiffel_projects

 

GitHub - dlfrnaos19/Aiffel_projects: task 1

task 1. Contribute to dlfrnaos19/Aiffel_projects development by creating an account on GitHub.

github.com

 

캐글 마스터에게 배우다(Chris Deotte형 고마워)

배운 것들을 바탕으로 3월경 시도했던 캐글 대회도 있습니다. 학생이 쓴 장문의 에세이를 바탕으로 각 문장별로 주장인지, 근거인지, 반론인지 등의 총 8가지로 분류하는 Classification 문제였습니다. 당시에 처음 겪는 task를 해결하기 위해서 대부분 Code와 Discussion을 읽으면서 왜 이런 코드를 작성하게 된건지, 왜 이런식의 전처리를 하게 되는지에 대해 이해하기 위해 집중적으로 시간을 보냈고, 작성된 코드를 이해하기 위해 함수를 열고 한줄한줄 입력과 결과를 확인하는 시간을 보냈습니다. 덕분에 이 때 정말 많은 실력향상이 있었음을 느끼고 있습니다(인내력 향상은 덤). 특히 Chris Deotte님의 Discussion과 code를 따라가는 것만으로도 정말 많은 배움이 있었던 것을 실감하고 있습니다. 덕분에 Tensorflow로 TPU를 활용해 학습의 파이프라인을 구축하고, 분산 학습을 구축하는데는 도가 텄다고 생각하고 있습니다. 특히 TPU를 사용해서 개인 컴퓨팅 능력을 능가하는 거대 모델들을 학습하고, 추론해보는 경험은 추후에 도래할 대규모 인공지능 시스템에서 제 역할을 할 수 있을 것 같다는 생각이 들었습니다. (대회 순위는 얻지 못했지만, 어려움에 좀 더 담대하게 다가서게 된 것은 덤입니다. 특히 그랜드 마스터들도, 높은 순위를 위해 수면 아래에서 수많은 노력을 한다는 것은 좀 더 저를 노력하는 사람으로 만들어 주었지요)

 

Feedback Prize - Evaluating Student Writing | Kaggle

 

www.kaggle.com

 

겸손하게 만드는 실패 프로젝트

뼈아프지만 실패한(실패로 간주하는)프로젝트도 있습니다. 당시 수학 문제를 푸는 모델로 koGPT와 T5를 사용해 해결하고자 했었는데 높은 정확도를 가지지 못했습니다. 이런 풀지 못한 과제 실패 경험을 다음 기수에게 전달하고자 내용을 정리해서 레포로 만들어 두었습니다. 주어진 예산을 활용해서 Google Cloud GPU를 사용할 수 있었는데, 덕분에 Cloud를 통한 컴퓨팅 사용에 굉장히 익숙해졌고, 거대 모델 사용을 재밌게 해봤습니다. 시간이 조금 더 있었으면, 당시 해외에 수학문제를 해결하기 위해 도입한 여러 방법들을 논문을 읽고 구현해봤으면 좋았을 것 같네요.

 

GitHub - koco-tunlp/math-challenge: Basic tutorials for KMWP newbies, from Data EDA to Base Code for model is available. Don`t w

Basic tutorials for KMWP newbies, from Data EDA to Base Code for model is available. Don`t waste your time and get the better score - GitHub - koco-tunlp/math-challenge: Basic tutorials for KMWP ne...

github.com

 

자신감 뿜뿜하게 만들어준 프로젝트

반면 저의 22년을 빛나게 해준 프로젝트가 있습니다. 캐글에서 얻은 지식으로 정말 큰 자신감이 생긴 시기에, 다른 대회를 찾던 중 국내 대회를 찾게 되었습니다. 통계청에서 주관한 대회였고, 4월 ~ 5월 진행을 했었습니다. 당시 자연어처리 카톡방에서 대회 참여자를 찾았고, 아무런 조건없이 함께 해줄 수 있는 사람만을 찾아서 했습니다. 아이펠 과정 중이었기 때문에 주간에 학습을 진행하고, 남는 시간에 대회를 진행했고, 팀원들은 원격으로 줌으로 회의를 진행하면서 함께 했습니다.

당시에 제가 가진 stack인 tensorflow와 TPU 하나만 믿고, 간크게 도전했습니다. 특히 BERT 계열의 한글을 학습한 모든 사이즈의 모델을 학습하고 예측해보면서 적합한 모델을 찾았고, 프로젝트에 큰 기여를 해주신 팀원 분과의 앙상블 모델을 제출함으로써 좋은 성과를 얻을 수 있었습니다. 물론 모델링 뿐만이 아니라, 코드 제출 이후 문서 작성에도 2~3배의 에너지가 들어간 것 같습니다. 그 땐 정말 학습보다 더 잦은 미팅을 하고, 실시간으로 문서 작성을 밤늦게까지 해야만 했었거든요.

누가 시켜서 한게 아니었고, 특히 제가 먼저 프로젝트를 제안하고 시작했었고, 열심히 해주시는 팀원분들 덕분에 힘들어도 끝까지 시도할 수 있었던 것 같습니다. 뭣보다 이 프로젝트를 통해서, 모델을 단순히 쓰는 것 이상으로 모델을 커스텀해서 학습하는 걸 경험하고, 협업의 중요성을 특히 깨닫게 된 계기가 되었습니다. 특히 이 레포로 시작된 이 프로젝트는 지금 취업한 회사에서 제가 계속해서 발전시켜 나가고 있다는 사실! ㅎㅎ 

시상식엔 현업자도 계셨고, 석사생 분들도 계셔서 정말 신기했었습니다

 

GitHub - dltmddbs100/KSIC_Automation: Winner of the 1st National Statistical Office Artificial Intelligence Contest

Winner of the 1st National Statistical Office Artificial Intelligence Contest - GitHub - dltmddbs100/KSIC_Automation: Winner of the 1st National Statistical Office Artificial Intelligence Contest

github.com

 

실패와 성공을 거치며...  이렇게 아이펠 인공지능 과정은 끝이 나게 됩니다.

 

더 공부해볼까?

프로그래밍은 배우면 배울수록 배울게 정말 많아지는 마법이 있습니다. 아이펠이 끝나고도 추가적으로 공부하고자 다른 과정에 지원 했었는데요.

청년대상 빅데이터 전문가 과정이 있어서, 지원 후 진행을 했는데 학습 과정의 대부분이 sql 이었고, 데이터 엔지니어에 더 적합한 학습과정인거 같아 중간에 포기했습니다.(선생님 인공지능이 하고 싶었어요...)

부산에서 하는 자바 풀스택 과정 이후, 더존비즈온에 입사하게 되는 과정에 붙게됩니다. 자바 외에도 네트워크부터 리눅스까지 다양하게 커리큘럼이 짜져있어서 만족스럽게 다니고 있었는데, 중간에 뜻밖에 제안을 받게 됩니다.

 

프리랜서

통계청 대회 이후, 해당 프로젝트를 활용해서 통계청 내의 데이터를 활용해 모델링을 할 수 있는

기회가 생기게 된 것인데요!

부산에서 중견 규모의 크기 회사에 입사가 예정된 상황이었기에 많은 고민을 했습니다. 가족과 다소 떨어진 생활을 해야하는 것도 있었기 때문인데요. 그렇지만 무엇보다 22년을 빛나게 해준 저 프로젝트가 그대로 끝이나게 되는 것은 아쉬웠습니다. 결국 회사의 제안을 받고 프로젝트를 진행했던 모델을 통계청 내에 넣게 되는 뜻깊은 작업에 동참하게 됩니다! (현재 진행형 이기도 하구요)

위에 업로드 된 깃허브 형태에서, 지금은 많은 것이 바뀌었습니다. 좀 더 편리하게 모델링을 하기 위해서 Huggingface의 Transformers 형태를 적극 채용해서 모델 클래스를 따로 만들었고, 학습과 예측 과정에 Huggingface의 에코 시스템을 집어넣어서 이제는 허깅페이스라는 거인의 어깨에 탄 프로젝트가 되었습니다.

또한 여러 부분을 리팩토링하면서 자연스럽게 Pytorch에 익숙해지고, 이제는 오히려 Pytorch를 쓰는 시간이 더 긴 것 같습니다. 리눅스 또한 좀 더 자연스럽게 다루게 되었고, 프로젝트를 발전하는 과정에서 패키지화도 진행해서 이제는 라이브러리처럼 편하게 업무에 사용하고 있습니다. 추후에는 다른 사람도 편하게 사용할 수 있도록 api를 문서화 하려는 작업을 진행해보고자 하고 있습니다.

모델링 하는 작업에 대한 문서 작업도 병행했는데요. 이 때 주로 사용한 라이브러리라 Plotly 입니다. Matplotlib에 비해서 좀더 사용하기 직관적이고, 기본 색감이 좋으며, 기본 html 형식으로 그려주는 것이 좋아서 사용하게 되었습니다. 대체로 plotly를 많이 사용해서, 해당 라이브러리에 대한 이해도가 많이 높아졌고, 일반적인 bar, pie 그래프 외에 좀 더 다이나믹한 연출할 타이밍을 기다리고 있습니다.

Mariadb, Oracledb는 원없이 다루면서 쿼리를 해보고 있어서 많이 향상이 되었다는 점은 장점이 되겠네요!

 

끝나지 않은 프로젝트

KT 주최 대회

좋은 결과가 있었던 것은 아니지만 배움에는 끝이 없다고 생각합니다.  일을 하면서 kt에서 주최한 대회에 참여했었는데요. 아쉽게도 대회에 정확도라던지 하는 결과로 나오는게 아니어서 정확히 등수가 나오진 않았으나, 이전 프로젝트 대비 훨씬 정리된 프로젝트 형태로 제출할 수 있었습니다. 이 프로젝트에선 KT에서 제공하는 Genie라는 솔루션을 통해 GPU를 활용해서 학습을 진행하는게 재밌었고, Huggingface의 에코시스템을 적극 활용해 학습과 예측을 했습니다.  협업과정에서 주로 모델링 부분을 담당했고, 데이터 분석가 역할의 팀원 분, 그리고 metric을 담당해주신 팀원분과 함께 재밌게 작업을 했습니다. task는 NER 이었고, 자체 eval 성능에서 높은 성능이 나와서 기분이 좋았고, Wandb를 활용해서 모델들의 성능을 비교하고 제출할 모델을 선정하는 등 완성도 높은 프로젝트를 수행할 수 있었습니다.

 

KT Dev Challenge 2022

문제 : T5 기반 개체명 인식 파인튜닝

shell-caper-efa.notion.site

 

GitHub - salmon-united/salmon-t5: 2022 kt dev chellenge

2022 kt dev chellenge. Contribute to salmon-united/salmon-t5 development by creating an account on GitHub.

github.com

 

한국어 인공지능 대회

음성인식 대회였는데 아쉽게도 이 쪽은 깃허브 코드가 없습니다. Naver에서 제공하는 툴을 사용했는데, 해당 툴을 익히는 과정과 음성인식에 대한 도메인 지식을 쌓는데 많은 어려움이 있었습니다. 특히 기존 base code가 kospeech 라이브러리로 구성되어 있었는데, 이 부분을 wav2vec 모델로 풀어보고 싶었으나, 아쉽게도 Naver 툴에 대한 이해가 늦어 완성하지 못한 프로젝트로 남았습니다. 다만 도메인에 대한 지식 획득 보다,  네이버 툴에 시간을 뺏긴건 아쉬울 따름입니다..

음성 분야에서는 검색하면 할수록 수환님이 해두신 부분이 많은 것을 느꼈습니다. 그래도 덕분에 Wav2vec 모델과 wav 데이터에 대한 이해도가 많이 상승해서, 다음 기회가 생긴다면 더욱 많은 것을 시도해볼 수 있을 것 같습니다

 

2022 한국어 AI 경진대회

문제 : 차량 내 대화 및 명령어 음성인식

shell-caper-efa.notion.site

 

오픈소스 프로젝트 참여

 

tpu-starter

 

생애 첫 PR을 진행한 프로젝트이고, 제가 도움을 받았던 프로젝트 입니다. TPU 활용에 대한 정보가 부족한 상황에서 한줄기 빛과 같은 프로젝트 였는데요. 당장에 보답하고자 했던 방향은 한국어 버전을 만들고자 깃허브 Owner인 ayaka14732에게 Discussion으로 제안했고, 작업을 함께 진행하게 되었습니다. 이후 한국어 버전으로 번역하는 과정에서 ayaka가 잘못 적은 내용에 대해 수정하는 작업도 진행했고, 추가 업데이트에 대응해서 번역을 진행하고 있습니다.

현재는 컨트리뷰터가 되어 함께 활동하고 있습니다. 저자는 주로 jax를 사용하고 있는데, 앞으로 jax로 계속 갈것인지, 아니면 starter라는 이름에 걸맞게 torch나 tensorflow 활용에 대한 것도 다룰 것인지 이야기 해보고 함께 발전해나가고 싶은 프로젝트 중 하나 입니다.

 

GitHub - ayaka14732/tpu-starter: Everything you want to know about Google Cloud TPU

Everything you want to know about Google Cloud TPU - GitHub - ayaka14732/tpu-starter: Everything you want to know about Google Cloud TPU

github.com

 

huggingface / course

 

tpu-starter와 달리, huggingface에 PR을 진행하는 것은 좀 더 까다롭고 힘든 과정이었습니다. 한국어 버전으로 번역을 하기 위해서 무엇보다 huggingface 에코시스템에 대한 이해를 하고 있어야 했고, 특히 디버깅 부분을 다뤘는데 해당 챕터에 내용이 꽤 많아서, 업무를 진행하면서 하느라 꽤 많은 시간이 소요되었습니다.

또한 완료 이후 fork 했던 branch를 PR 하는 과정에서 정말 많은 시행착오가 있었습니다. fork 이후 다른 사람들의 커밋이 쌓이게 되면 자연스럽게 생길 일이기 때문에 이 부분은 집중해서 연습하고 따로 블로그 글로 정리해두기도 했습니다.

Git Fork 후 Pull Request 할 때 conflict 해소 방법

덕분에 깃과 깃허브를 다루는데 한층 더 이해도를 높힐 수 있었고, 특히 huggingface는 PR을 받는 과정 또한 자동화로 만들어두어서 성공시에 바로 반영이 되게끔 만들어둔 시스템이 인상 깊었습니다. 역시 대형 프로젝트는 뭐가 달라도 달랐습니다.  Huggingface course에 컨트리뷰트를 하면서 귀여운 Pull Shark를 얻을 수 있었습니다!

 

GitHub - huggingface/course: The Hugging Face course on Transformers

The Hugging Face course on Transformers. Contribute to huggingface/course development by creating an account on GitHub.

github.com

 

비전공자에서 전공자하기

비전공이라는 부분은 여전히 불편한 진실이고, 부족한 부분이기에, 인정하고 이를 보완하기 위해 노력하기로 했습니다.

현재 학점은행제를 통해 운영체제, 컴퓨터구조, 알고리즘, 이산수학을 수강하고 있습니다. 이 강의 이후로 정보처리기사를 취득해 정식으로 컴퓨터 학위를 취득하고자 하고 있습니다. 물론 학위 취득을 한다해도 여전히 공부할 내용은 많기 때문에 네트워크 등의 컴퓨터 공학 지식을 계속 배워나가고자 합니다.

 

23년 공부 목표

네트워크서비스, 디자인 패턴 대한 공부를 주로 하고자 합니다.  모델링에 대한 경험은 다수 있으나, 이런 모델이 어떻게 고객에게 전달할지 엔드 투 엔드에 대한 경험을 쌓아보고자 하며, 이러한 어플리케이션을 만드는 전체 과정에 일련의 디자인 패턴을 적용해서 만들어 보는 경험을 해보고자 합니다. 현재 프로젝트를 진행하면서도 협업 하는 과정에서 각자의 코드를 이해하는데 어려움이 있었는데, 이러한 부분을 공통된 디자인 패턴을 공유하고 함께 작업해보고자 합니다.

또한 서비스 방식이 비단, 파이썬에만 머물지 않도록 가능하면 javascript를 활용하는 방안에 대해서도 고민을 하고 있습니다. 또한 발전하는 자연어처리를 허깅페이스와 함께 컨트리뷰트를 진행하면서 함께 성장해 나가고 싶습니다.

러스트를 배우는 것에 대해 굉장히 고민하고 있습니다. 지금 진행하는 프로젝트가 끝이나면 딥다이브 할 수 있을 시간을 기대중입니다. 허깅페이스에서도 러스트를 많이 사용한 것으로 보여 많은 호기심을 가지고 있습니다.

 

취미..?

공부할게 많아 한동안은 제게 취미라 할만한 것은 유튜브 밖에 없을 것 같습니다. 유튜브도 사실은 대체로 프로그래밍 위주의 구독이 되어 있어서 여전히 공부에 집중하고 있습니다. 제가 보는 것을 몇개 소개해드리자면...

노마드코더

IT 트렌드를 잘 잡아주시는 분 같습니다. 특히 예전에는 언어별 특징에 대해서도 잘 설명해줘서 좋았습니다! 요즘에는 트렌드 위주로 설명하기 때문에 이슈에 대한 분석을 짧게 잘해줘서 시청하고 있습니다

허깅페이스

저는 허깅페이스를 통해 정말 편하게 자연어 처리를 하고 있습니다. 허깅페이스가 가는 방향은 저의 주관심사이고, 특히 jax, flax에 관한 정보도 여기에서 가장 빠르게 얻을 수 있어서 잘 보고 있습니다.

ArjanCodes

저의 파이썬 시니어를 담당하고 계신 분입니다. 파이썬에 대한 주제를 위주로 다루며, 특히 기초 파이썬을 하신 분들이라면 그 다음으로 봐야할 중급자를 위한 컨텐츠를 많이 만들어주고 계십니다. 디자인패턴, 데이타 클래스, 중급 기능에 대한 소개를 많이 해줍니다.

FreeCodeCamp

이전에 FastAPI와 Mysql에 딥다이브 할 때 참고했던 영상 중 하나입니다. 대체로 동영상 내용이 길기 때문에 특히 시간이 넉넉할 때, 딥다이브 할 때 가장 좋은 유튜브 강의라고 생각합니다. 1개의 완성된 프로젝트를 다뤄볼 수 있기 때문에 전체를 다룰 때 특히 좋다고 생각합니다

 

이번 한 해 많은 것을 했고, 많은 도약이 있었습니다.

비전공자, 부트캠프 출신에 머물지 않고 숙련된 프로그래머로써 시니어로 한발짝 더 나아가보고 싶네요

다들 22년 한해 고생하셨습니다.

23년에도 많은 경험과 공부로 성장하는 한해 되시기 바랍니다!

반응형