10-03-TD

10/03

백신을 맞은 다음에 아직 컨디션이 완전히 돌아오지는 않아서 오늘은 간단하게 강화학습 책을 다시 한 번 읽었다. 아직 정리할 정도로 이해한것 같지는 않다. PRML책도 같이 읽어서 복습해야 할 것 같다.

+정리한것

멀티프로세스와 멀티스레드

10-02-TD

10/02

오늘은 팀원들과 함께 모의 코딩테스트를 시행하였다.

푼 문제

  • 오큰수 : stack문제
  • 탑 : stack 문제 (오큰수 반대)
  • 강의실 배정 : Heap, 그리디
  • 쇼핑몰 : Heap
  • 부분합 : Two pointer

추후에 정리해서 깃허브에 업로드할 예정이다.

강화학습에 대해서 공부를 다시 시작하였다. 가치기반 학습에 대해서는 예전에 많이 공부를 해두어서 복습하는 느낌으로 공부를 하였고, 이번에는 저번에 공부할때 조금 부족했던 정책기반학습을 위한 Policy Gradient를 이해하기 위해 중점적으로 할 예정이다.

추후에 포스팅을 할 예정이다.

백신을 맞고 2일정도 누워있어서 오랜만에 CS - OS 에 관하여 포스팅을 하였다.

프로세스와 스레드

9-29-TD

9/29일

오늘은 백준 알고리즘 문제 2개정도 풀고 예전에 KDT에서 한번 해보고싶었는데 시간 난이도 등의 문제로 포기한 multi labeling 관련 논문들을 검색해 보았다. 조만간 시간을 내서 읽어보고 한번 포스팅을 할 예정이다.

그리고 음(mm)에서 이벤트로 카카오 Brain 대표 Curtis [Unthinkable Question] 나는 왜 ai개발자로 전향했을까를 들었다. Curtis에 관한 여러가지 개인적인 이야기도 있었고, Brain에서 어떤 일을 하는가, 질문시간을 통한 ai의 방향, 학부생의 공부 방향 등등의 이야기가 있었는데, 무엇보다 기억에 남았던것은 자기자신을 특별하게 만들기 위해서 해야할 일이었다.

남들이 만들어놓은 길에서 조금만 벗어나도 유니크해진다.

+ The Hacker way

이 말을 듣고 나의 경쟁력은 무엇이 될 수 있을까에 대해 시간을 내서 한번 고민을 해봐야겠다고 다짐했다. 또 그동안 하면 좋겠다 라고 생각해놓고 아직 내 실력이 부족한거같으니까 좀더 공부하고 하자 라고생각했던 기술관련 공부등을 다시 시작해야겠다.

  • Multi Agent RL
  • Multi label Classfication
  • GAN 과 RL의 결합

인공지능에 대해서 본격적으로 공부하기로 마음먹은지 1년이 조금 넘은 시간이 흘렀는데 하면 할수록 인공지능이라는 탑이 너무나도 높아보이고, 탑을 올려보는동안에도 조금씩 높아지는것이 눈에 보여서 한동안 슬럼프에 빠졌었던 때도 있었다. 내가 잘하고있는걸까 생각도 많이했었고, 거의 혼자서만 공부를 해오다보니 내 실력은 어느정도일까 의구심도 많이 들었다. 오늘 이 라디오(?)를 들으면서 걱정은 줄고 고민할 거리가 많이 늘어난 느낌이다.

9-28-TD

9/28일

오늘은 어제의 연속으로 bitbuckit runners와 pipeline을 다루었다.
아직 다룬지 얼마 안된것과 도커에 대해 자세히 모르기 때문에 runner를 실행시킬때마다 빌드실패의 늪에 빠지게 되었다. SSH private key를 도커컨테이너 내부로 전달을 했어야 했는데 미숙하여 환경값으로 저장까지는 했으나 제대로 보내지 못하였고, 여러 커뮤티니에 비슷한것들을 찾아 다니던 끝에 ssh private key는 넘겨 줄 수 있었지만, 이제는 컨테이너끼리 메세지큐를 보내는곳에서 에러가 발생했다.

해결한 문제

bitbucket-pipelines.yml
1
2
3
4
5
6
7
8
9
10
pipelines:
branches:
name:
-step:
script:
- docker build --tag tag:1.5 --build-arg ssh_prv_key="$(echo $SSH_PRV_KEY | base64 --decode)" .
services:
- docker
- redis
- rabbitmq
1
2
3
4
5
6
7
FROM pytorch/pytorch:1.7.0-cuda11.0-cudnn8-runtime
ARG ssh_prv_key # 여길 빼먹음

RUN mkdir -p -m 0600 /root/.ssh \
&& ssh-keyscan bitbucket.org >> /root/.ssh/known_hosts \
&& echo "$ssh_prv_key" > /root/.ssh/id_ed25519 \
&& chmod 0600 /root/.ssh/id_ed25519

도커파일을 빌드하는 과정에서 argument 를 받아오긴 했는데 도커파일 안에서 선언은 하지 않아서 계속 에러가 발생했다.

ARG and ENV의 차이

ARG와 ENV의 가장 큰 차이점은 빌드를 하고난 다음에도 사용이 가능한가? 의 차이이다. ARG는 빌드시에만 쓰이는 argument이며 ENV는 빌드가 끝나고도 사용 가능한 환경변수라고 생각할 수 있다. Dockerfile이 아닌 명령어로 빌드를 할때는 arg만 가능하고, run을 할때는 env의 선언만 가능하다.

  • ARG
    • Dockerfile에서만 사용되는 변수 선언
    • docker build 시에 –build-arg 옵션을 활용하여 오버라이딩 할 수 있다.
  • ENV
    • Dockerfile뿐만 아니라 컨테이너 내에서 사용가능한 변수 선언
    • docker run 시에 –e 옵션을 활용하여 오버라이딩 할 수 있다.

9-27-TD

9/27일

오늘은 최종프로젝트를 자동빌딩 시키기 위해 CI/CD 의 하나인 Bitbucket runners에 대해서 조사했다. 하지만 Bitbucker Image에 Docker가 안깔려있어서 빌드되는것을 확인하는데에는 실패 하였다. KDT과정이 끝나고 아마존이 아닌 싼 VPS에서 모델을 돌리려 하다보니 이런저런 제약사항이 뒤따르고있다. 모델이 많이 무거워서 모델 경량화에 대해서 한번 공부할 필요성을 느꼈다.
그리고 Git 명령어에 대해서 공부했다.(저번에 저지른 사건을 잘 처리하기 위해서)

오늘 한것

  1. Hash Table 정리 해쉬 테이블

9/26-일기

9/26일

다 지나가서 27일 오전 1시에 쓰는 일기

카카오 준비한다고 몇 일 동안 하지 못했던 KDT 프로젝트 유지보수를 다시 시작하였다.
카카오 준비 직전에 바쁘다고 정신이 없었는데 그 때 ssh키를 모르고 커밋을 해버려서 팀내에서 새로 규칙을 정해서 브랜치를 정리했다. (미안….)
(private key 파일을 다행(?)히도 push 까지는 하지 않았고, 사용하는 repository가 private라 큰일은 없어서 다행이었다.)
가볍게 git을 공부했었는데 제대로 공부할 필요성을 느낀다.
무엇보다 git add . 이거 쓰면 안될거같다.

오늘 공부한것

1. Hash Table (추후에 자세히 정리예정)

  • python dictionay structure
    • 파이썬 내부에서 dictionary는 어떻게 돌아가나?
  • dictionary와 hashtable 차이
    • Boxing/UnBoxing을 하나 안하나
  • 충돌 처리기법
    • Open Hashging
      • Chaining : linked list 이용
    • Close hashing(Open Addressing)
      • Linear probing
      • Quadratic probing
      • Double hashing

1. 깃 브런치 복습

(https://learngitbranching.js.org/?locale=ko)

9/25-일기

9/25일

카카오 2차 시험을 보았다.
문제는 밝힐수 없지만 흥미로운 주제였다.

하루종일 시험을 보면서 더 공부해야할게 많다라는 점과 정말 잘하는사람은 엄청 잘하더라 알고리즘 어케 짰을지 궁금하다 라는 생각이 들었다.
그리고 리더보드는 정말 압박감이 심하더라…

필기시험과 api코딩테스트를 같이 봤는데
생각보다 내 cs 지식이 빈약한것을 느낄 수 있었다.
그래서 오늘 이런것들을 찾아서 정리해 보았다.
조금더 있는데 시험본다고 너무 피곤해서 내일 남길 예정이다.

  1. 데이터베이스 Key Post not found: database-key 데이터베이스 Key

부분 키(Partial Key) 또는 식별자(Discriminator)

  • 상위 개체 타입이 결정되지 않으면 개별 개체를 식별할 수 없는 종속적인 개체 타입
  • 독립적인 키로는 존재할수 없지만, 상위 개체의 타입의 키와 결합하여 약한개체 타입의 개별개체를 고유하게 식별하는 속성

약한 개체 타입

  • 상위개체타입이 결정되지 않으면 개별 개체를 식별할 수 없는 종속적인 개체타입
  • ex) 프로리그 축구단의 소속된 선수의 등번호
    • 등번호만 놓고 보면 다른축구단에도 같은 번호가 존재 할 수 있지만, 특정 축구단의 소속된 선수의 등번호는 단 하나만 존재한다. -> 개별개체를 식별가능

Http status code

  • 100 : 조건부 응답
  • 200 : 성공
  • 300 : 리다이렉션 완료
  • 400 : 클라이언트 에러
  • 500 : 서버 에러
    추후에 Fastapi 정리하면서 한번더 정리할 예정