LostCatBox

Devfest Seoul Bingo 2019에서 배운 것들

Word count: 786Reading time: 4 min
2019/10/20 Share

keynote


구글 양승도님께서 라떄는 말이야
강조하신점 3가지

  • Focus on USER
  • Think 10x (10배로 생각)
  • Share everything You can

쉽게 따라할 수 있는 한국어 임베딩 구축 (이기창)

임베딩이란?

단어, 문장(범주형 자료)를 연속형 벡터 형태로 변환시키는 것
주로 인공신경망 학습을 통해 범주형 자료를 벡터 형태로 바꾼다.
즉, 자연어 ->백터값

|구분|메밀꽃 필 무렵|운수 좋은 날|사랑 손님과 어머니|심포 가는길

:-: :-: :-: :-: :-:
기차 2 10 7
—- —- —- —- —-
막걸리 1
—— —- —- —- —-
선술집 1
—— —- —- —- —-
  • 세로줄로 분석하면 문서임베딩
  • 가로줄로 분석하면 단어임베딩

임베딩으로 할 수 있는 것들

  • 임베딩이 되면 관련도, 유사도 계산 가능, 시각화도 가능(관련있는것끼리 묶이는 형태)
  • 벡터 연산(유추 평가): 아들 - 딸 + 소녀 = 소년
    ((((이미지))))

여기는 잘 모르겠다 연산이 어떻게 가능한거지? 원리?

  • 전이 학습 (transfer learing): 다른 딥러닝 모델의 입력값으로 학습가능?

  • 전이 학습한 모델이랑 처음부터 랜덤으로 한 모델이랑 시작점자체가 다르다
    (구축해놓으신자료링크)

  • 단어 임베딩으로 문서 분류하기

    • 핵심컨셉: 문서에 속한 단어가 유사하면 문서 의미도 비슷하다
      (단어 벡터 중심=도형중심=유사값)
      (이미지설명: 벡터값이 각자 이 영화 잼- 긍정, 이 영화 노잼 - 부정, input값이 이 영화 꿀재미? 판단은 가장유사한 학습데이터 레이블을 예측값으로 긍정이라고 판단)
      즉 따로 복잡한 딥러닝 안해도 70퍼이상 정확도나옴 (딥러닝 80~90)

    단어수준 임베딩 구축

    • 일단 단어 빈도를 셈(순서정보x, 빈도정보o)
      단어 순서로 다시 분석(순서정보o)
      (이떄 앞에서부터만 읽는것 ELMo, 앞으로 뒤로 BERT)(BERT가 더 나음)
    • 단어가 어떤 단어와 주로 같이 나타나는지 살핀다 . (Word2Vec, Fassttext, Glove이런 방식으로 학습(임베딩 구축))

    문장수준 임베딩 구축

    • ElMo, BERT 다양한 문장 수준 임베딩
    • 장점: 동음이의어 구별 가능
    • 문맥적 의미를 벡터화 할 수 있다. (ex.배)
      ((이미지링크))

임베딩 활용

  • 전이학습으로 다른 네트워크의 입력값으로 사용돼 자연어 처리 성능 높일 수 있음 (미개척분야)
  • 현재까지는 폴 케익?+BERT 효율 최대?

Clean Code for ML/AI (한성민)

  • 꺠진 유리창이론: 곧 다른 유리창들도 꺠진다. 내가 코드를 잘짜야 팀한테도 열심히해야겠다는 생각이듬
  • 보이스카웃 규칙: 여러분 손을 거치게된 코드는 원래보다 더 낫게 만들고 떠나라

안좋은 케이스

  • if문을 남발.(branch가 많아지면 더 불편, 안좋음)

    해결: ruturn을 사용해 함수가 그자리에서 끝나게하면 if문을 줄일수있다

  • 주석의 남용.

해결: 자세하고 친절한 주석을 함수 이름으로 바꿔보세요

  • 중복코드

    해결: 데이터와 데이터 처리를 분리하여 나중에 데이터추가할떄 더 편함, 관리 용이

  • 너무 긴 메소드, 거대한 클래스, 상속 거부, 과도한 복잡성, 게으른 클래스

좋은 코딩으로 수정하기

  • 안쓰는 키워드 제거, 직접기입되어있는 설정이수들을 전역 변수로 추출,
  • 복잡성이 높은 로직 함수 추출, 조건식 단순화, 중복코드함수 추출, iifififif 절대 쓰지마
  • 모델혹은 oprimizer의 인수정보들은 전역변수에서 설정프레임워크를 이용한 파라미터로 변화시킴
  • 코드 컨벤션 공통화(‘통일, 함수사이를 2줄넘김, 1줄을 넘어서는 함수 인수의 intent재조정)

지속적인 코드 관리 프로그램 쓰기

  • lint에서 pylint or flake8 추천(한줄한줄 에러 찾아줌)
  • quality gate의 sonarqube 추천 (전부 코드 몇점인지 평가 몇점이상만쓰기설정)

참고

hot fix= 제품사용중 버그수정, 취약점보안 긴급 배포
채팅창 QR서비스 찾아보기

Toy 프로젝트

어떻게 성장했는가? 육하원칙!

무엇을 , 어떻게, 왜

관심사가 클라우드 서비스, 따라서 CLI로 클라우드 속도 체크 프로그램 만듬

어떻게?

만든다음 프로그램을 알리기위해 google, G AWS한국 모음, 등등
국내에서 피드백을 많이 받고 외국 커뮤니티에도 피드백 받았다. git
결국 이것들이 피와 살이 되었다.(반드시 경험해야할것같다)

적절한 커뮤니티에 공유하는 것이 중요. 혼자만들어봐야 아무도 알려주지 않는다.
나를 노출시키는 프로젝트을 많이 기록해놓자

그이후 이야기들…

  • README.md를 쉽게 정리 (프로그램의 첫 인상)
    visual하게, 프로그램 실행하면 스크린샷까지 띄움
  • 무엇에 쓰는 프로그램인지?

  • 프로그램 설치과정 최대한 자세히(예상되는 오류들도 적어놓으면..좋다)(피드백적기)

  • 기술 + 가장 중요한건 자기 브랜딩 + 내 프로젝트 오픈소스후 커뮤니티 (reoin.tistory참조)

  • 내가 하고싶은 분야는 4시간 출퇴근 길에서도 가능하다

  • Linked in 업데이트! (내가 인사과라고 생각하면 키워드 검색에 걸려야함!)
    (전략적 UPdate)

  • 블로그에는 내가 분석한 오픈소스까지 기록하면좋다

톱아보다

(서버관련 지식이 많이 부족해서 들은것 거의 그대로,,)

보통은 유저- Apache- Tomcat(Application(UI/UX, 유저, 주문))-MYSQL,MariaDB
구조이므로 어플리케이션의 유저를 고치려면 멈추고 재배포등으로 서비스가 중간에 끊겨야 가능하다.

MSA

애플리케이션을 느슨히 결합된 서비스의 모임으로 구조화하는 SOA스타일의 일종인 소프트웨어 개발 기법

MSA 구성

  • API Gateway: API의 End-point를 통합
  • Orchestration: 여러개의 서비를 묶어서 하나의 서비스로 만듦(관리 아주 용이)
  • Service Mesh: 서비스간의 통신(네트워크관리)
    (이미지 반드시 필요)
    (티월드 예시 이미지)

MSA 장점

확장의 유연함, 알림 서비스 추가
하나의 서비스가 죽으면 개만 죽음.. 나머지 전체는 정상작동

MSA 단점

장애추적이 굉장히 어렵다
(이미지)
MSA Pattern 설명

Clould and Sererless

On-Premise에서 MSA(아마 내가 직접돌리는 물리적서버인듯)

  • 관리용 애플리케이션(Batch,crow…필요)
  • 다양한 프레임 워크를 쓰다보면 매번 새로운 장애 발생(라이브러리, 모듈)
  • 물리 서버관리 (네트워크, 스토리지.. 금전적)
    (이미지. 겪었던 문제들)

Clould and Serverless 차이

  • 클라우드는 컴퓨터의 시스템 리소스 저장
  • serverless 동적머신활용..
  • 아마존 Lambda 서비스는 코드실생 다른 AWS서비스에서 코드를 자동으로 트리거하도록 설정

Clould 문제점

  • Cloud 맞게 커스텀 필요
  • 잘못설계시 roll back 위험성 (일만 2배할 가능성 존재)

Multi Cloud

  • 서비스명도 옵션도 다름. 따라서 기능 옵션통합!

HCI

  • 데이터 센터 서비스를 페키징하고 단일 애플리케이션에서 관리할수있도록 지원하는 어플장비

Docker

  • 어플들을 Container안에 배치시키는 일을 자동화하는 오픈 소스 시스템

Kubernetes

  • Containerized 된 Application을 자동으로 배포, 스케일링 및 관리해주는 오픈소스 시스템

Istio

분산형 MSA실행을 지원하는 독립형 오픈소스 Service Mesh
(인증, 승인, 암호화를 확장 가능한 방식으로 제공 및 관리)

물리서버에서 가능한것은 클라우드,…등등 모든곳에서가능

하지만 현재 최적의 조화는
적절한 Cloud Service + k8s Cluster의 사용
(이미지)

CATALOG
  1. 1. keynote
  2. 2. 쉽게 따라할 수 있는 한국어 임베딩 구축 (이기창)
    1. 2.1. 임베딩이란?
    2. 2.2. 임베딩으로 할 수 있는 것들
      1. 2.2.1. 단어수준 임베딩 구축
      2. 2.2.2. 문장수준 임베딩 구축
    3. 2.3. 임베딩 활용
  3. 3. Clean Code for ML/AI (한성민)
    1. 3.1. 안좋은 케이스
    2. 3.2. 좋은 코딩으로 수정하기
    3. 3.3. 지속적인 코드 관리 프로그램 쓰기
    4. 3.4. 참고
  4. 4. Toy 프로젝트
    1. 4.1. 어떻게 성장했는가? 육하원칙!
      1. 4.1.1. 무엇을 , 어떻게, 왜
      2. 4.1.2. 어떻게?
      3. 4.1.3.
    2. 4.2. 그이후 이야기들…
  5. 5. 톱아보다
    1. 5.1. MSA
      1. 5.1.1. MSA 구성
      2. 5.1.2. MSA 장점
      3. 5.1.3. MSA 단점
    2. 5.2. Clould and Sererless
      1. 5.2.1. Clould and Serverless 차이
      2. 5.2.2. Clould 문제점
    3. 5.3. Multi Cloud
    4. 5.4. HCI
    5. 5.5. Docker
    6. 5.6. Kubernetes
    7. 5.7. Istio
    8. 5.8. 물리서버에서 가능한것은 클라우드,…등등 모든곳에서가능