Pycon Korea 2018

1일차 : 2018-08-18 토요일

소설 쓰는 딥러닝 - 조용래

  • POZA Labs + 연세대학교 김우정
  • 딥러닝을 사용할 때 어려운 점
    • 한국어 특성 중 교착어
    • 장기 의존성 학습 (이 전 문장에서 나왔던 내용이 후로도 영향을 미침)
    • 학습 속도
  • 과정
      1. Tokenizer
      • KoNLPy, soynlp 사용해 보았음
      • customized dictionary를 만들어서 판타지 소설 지명을 추가함
      1. Transformer (Encoder-Decoder Framework)
      • 참고 : Attention is all you need 논문을 기본으로 학습해 봄
      • Attention As Alignment
      • Attention As dictionary
      • Multi-Head Attention
      • 결과적으로 소스 문장에 기반한 문장을 생성하는 것이 가능함
      • 장점 - RNN계열에 비해서 약 30배 정도 병렬적인 학습속도 개선을 얻을 수 있음
      • 단점 - 소스 문장이 길어질수록 제곱에 비례해서 속도가 느려짐
      1. Memory network
      • Question Answer 모델을 사용
      • Memory를 만들듯이, 문장을 찾고자 하는 정보에 대한 결과로 사용함
      1. Generator & Rank
      • BEAM search
        • 여러 개의 후보 문장을 끝까지 만들어 보고, 괜찮은 문장을 평가해서 최종적으로 선택하는 방식 (단어 하나하나를 선택하는 방식이 아님)
      • Ranking
        • 지금까지의 문장과 다른 새로운 문장에 높은 점수를 줌
    • ETC - Tensorflow vs PyTorch
      • Static Graph vs Dynamic Graph
      • Good for Prototyping vs Good for Debugging
    • 결과
      • Input : 사용자가 5개의 문장을 시작으로 선택함
      • Output : 10개의 후보 문장을 만들면 하나하나, 그 중에서 적절한 문장을 선택함
      • KT 인공지능 소설 공모전에 출품한 작품

인생은 짧아요, 엑셀 대신 파이썬 by 이승준

  • https://www.slideshare.net/plusjune/ss-109967905
  • RPA(Robot Process Automation)에 있어서 파이썬은 너무 좋다
    • 엑셀시트 사용
      • OpenPyXL, xlwings, XlsxWriter
    • 대부분의 데이터 처리는 pandas / matplotlib로 쉽게 대체가 가능하다.
    • 크롤링 / 쪽지, 이메일 보내기는 Selenium + BeautifulSoup로 간단하게 가능
    • 액티브X 인증서 기반도 opencv등을 응용한 pyautogui등을 사용하면 충분히 클릭 같은 부분도 자동화가 가능하니 참고하도록 하자.
    • 보고서 생성 같은 부분도 Jinja2를 사용하면 쉽게 markdown을 바로 보고서 문서로 바꾸는 것도 가능함.
    • 이메일 자동화는 smtplib / MIMEMultipart 참고
    • 메신저 봇 자동화 python-telegram-bot
    • Robot Framework 는 이러한 모든 사무자동화 문제들을 통합적인 Framework로서 제공해 주는 툴임
      • 브라우저 자동화
      • 엑셀 자동화
      • 데스크탑 자동화
      • 운영체제
      • 원격 접근, 제어

2일차 : 2018-08-19 일요일

추천 시스템을 위한 어플리케이션 서버 개발 후기 @ kakao by 김광섭

  • Slides
  • 서비스 아키텍쳐
    • 서비스 -> mySQL 서비스 스키마 -> 추천 엔진 데이터
  • 개발에서의 고민들
    • Python2 vs python3
      • =tornado vs Sanic의 문제였다.
      • 결국은 Python3로 바꿨음
      • Sanic의 문법이 훨씬 가독성이 높게 나온다.
      • 성능에 있어서도 tornado대비 약 2.1배 빠른 응답속도 (uvloop 덕택)
    • 데이터베이스 프로파일링
      • 최적화의 끝은 결국 네트워크 IO가 Bottle Neck이 되더라.
      • MongoDB의 aggregate기능으로 여러 연산 중복 실행 가능
      • 그 중 $filter 사용 결과가 우월했음.
      • 반면 groupby의 경우는 DB에서 너무 느리기도 했다.
        • 이 경우는 App 레벨에서 처리하는 게 더 빨랐음.
    • 데이터 슈퍼 노드 문제
      • Sharding을 할 때, DB가 이상하게 죽는 문제가 있었음
      • 원인은 공통으로 사용되는 리소스가 있어서 부하가 1번 샤드에 몰리는 문제
      • 내부 DB 서비스를 사용했기 떄문에 해결이 가능했음
    • gunicorn 사용의 이점
      • WSGI 특성으로의 장점이 매우 컸음
      • App 레벨에서 프로세스를 껐다 키는 것처럼 간단하게 앱 관리가 편했음
    • 수치 연산
      • 기본 라이브러리가 느리다고 의심되는 부분이 있으면 꼭 C로 짜서 대체하는 걸 고려해보자.
      • 수치 연산에 일반적으로 Numpy, Pandas 등을 사용하기는 하는데, 벡터 연산, Matrix 연산 에서는 고려해 보자.
      • 딥러닝을 적용하는 데 있어서도 Softmax 결과들을 종합하는 연산 부분을 C로 짜서 Cython으로 했더니 굉장히 개선된 경우가 있었음

땀내를 줄이는 Data Preprocessing & Feature Engineering by 박조은

  • Intro : Data cleansing에서 필요한 여러가지 작업에서 수월한 툴 이야기
  • plotnine - R의 ggplot을 그대로 사용 가능함

Ready, Get set, Go by 김영건

  • Slides
  • 컨퍼런스 행사에서의 스프린트 (=오픈소스를 같이 집중적으로 짜 보는 행사)
  • 스프린트의 역사는 오픈소스의 역사화 함께 함 : pycon보다 오래됨
  • 실제 오픈소스에서의 스프린트, 특히 큰 오픈소스의 스프린트는 정말 좋다.
  • 굉장히 즐겁게 다 같이 개발을 하는 경험을 쌓을 수 있는 시간입니다.
  • 놀라운 점
    • 스프린트의 최고 장점은 아무래도 메인테이너와 오랜 시간 같이 있을 수 있다는 것
  • 현재 진행되고 있는 스프린트
    • pyData Sprint
    • DjangoCon Sprint
    • Mozilla Doc Sprint
    • 공개SW개발자센터 컨트리뷰톤
  • Worldwide pandas sprint 2018
    • 2018-03-18 하루 동안 246 PR이 올라옴
  • 스프린트에 대한 팁
    • 왠만하면 뒷풀이는 참석하자 (스프린트는 친해지는 자리)
    • 메인테이너가 있는 스프린트에 참석하는 것이 좋긴 함
    • 10명 정도 사이즈가 좋은 것 같습니다. (도와주는 사람 많으면 20명까지도 가능)
  • 10월에도 추가로 스프린트를 할 예정이니, 같이 했으면 좋겠습니다.
  • 다양한 전 세계의 파이콘에서 다양한 스프린트를 하니 그 부분도 참고하세요

법률 네트워크 분석: 30년간의 변화 by 김재윤

  • 법률과 프로그래밍은 굉장히 비슷한 점이 많다.
  • 법률에서의 에러
    • 인용오류 발생 = 404 Error
    • 시행예정법률 개정 오류 = 버전 혼동
  • 최근 에러 증가, 법률의 복잡성 증대 때문?
    • 글자 1700만자, 법률간 인용 매년 7% 증가
  • Law as a network
    • 법률 = Node, 법률간 인용 = Edge
    • Law 법률 네트워크의 복잡성은 계속 늘어나고 있음
  • 입법주의가 잘 유지되고 있는가가 의심된다.
    • 현재 우리나라 법률에서는 Power law, Truncated Power Law 분포가 등장하고 있다.
    • 즉, ‘자연법칙’의 패턴이 입법에 나타나고 있다. 이는 과거의 법률이 현재의 법률에 지속적인 제약을 준다는 것을 뜻한다.
    • 입법의 통제 가능성과 가독성에 대해서 걱정할 필요
    • US Code (=USC, 미국법률)은 Log-normal분포를 보인다.

  • 알파로우 스터디, 싸이버스
    • 다음 시즌도 계속됩니다. 참가해 주세요!
Share Comments

Google IO Extended 2018

Google IO 2018에서 나온 내용들을 리뷰

1-B. What’s new in Tensorflow by 이건희 다우기술

  • Tensorflow @ many platforms

TF + Javascript

  • 왜? - 브라우저에서 작동하는 Tensorflow
  • TF.js
  • 기존 python 기반보다 3~4배 정도 느린 수준

TF + nodejs

  • 기존에는 nodejs express <-> server tensorflow daemon
  • express + tesnorflow로 처리하는 것이 가능해짐
    • 기존의 방식보다 network 비용이 막대하게 필요함
  • TF.js Node의 경우에는 기존 Python과는 거의 차이 없음

왜 TF + JavaScript?

  • ChromeOS 에서 확장하려는 구글의 시도
    • 현재 ChromeOS 에서 Linux App이 돌아가도록 하고 있음
  • Edge 디바이스에서 TF 영향력 강화
    • Tensorflow.js
    • Tensorflow LITE (Mobile / IOT)

Tensorflow HUB

  • 모델을 바로 HUB에서 공유하는 서비스
  • 일종의 Docker-HUB
  • 미리 학습된 가중치과 그래프를 포함하는 모듈들
  • 허브에서 가져오는 것을 바로 사용 / 재사용 가능
  • Modules
    • Image : Inception, Mobilenet, NASNet, PNASNet, ResNet
    • Text : Universal Sentence Encoder, ELMo, NNLM embedding trained on Google News, W2V trained on Wikipedia
    • Others : GAN, delf, Inflated 3D Convnet (I3D)

Tensorflow Serving

  • 방금 제대로 적용된 수준의 내용은 아님
  • RESTful API 제공

2-B A Google Assistant new features by 양승찬 Google

3-B Somethings about TPU by 이진원 삼성전자 DS

4-B 모바일 개발자를 위한 머신러닝 : ML Kit by 남상균 NBT

  • Google IO의 기조
    • IO 2017 : Mobile First to AI First
    • IO 2018 : Solving Problems with AI for everyone
    • ML을 모든 개발자들에게 쉽게 사용할 수 있는 환경 제공
  • On-device ML
    • Good : 낮은 지연시간 / 오프라인 동작 가능 / 저전력 고효율
    • Bad : 메모리 사용 제약 / 배터리 소모 / 작은 컴퓨팅 파워
  • 반면 Apple은 Core ML을 통해서 iOS app에서 사용할 수 있도록 제공
  • ML Kit + AR Core (Google) VS Core ML + ARKit (Apple)
  • Firebase 기반으로 사용하는 것 설명 : 주로 Vision만 가능
    • 두 가지 종류 (On-device / Cloud)

5-A Google News by 안태현 Google UX Product 총괄

  • Google IO 에는 Googler는 잘 못 간다. (외부인 위주임)
  • Google News가 왜 중요한가?
    • 48K new documnets (for 1min?)
    • Fake News가 잘 걸러지고 있나?
    • 58% : High Quality 정보가 찾기 힘들다
    • 57% : 뉴스를 믿지 못하겠다.
    • 33% : 뉴스는 나의 Unhapiness를 올리는 데 주력한다고 느낀다.
    • => High Quality Information을 제공하는 데 주력
    1. Keep up with news you care about
    • TimeLine / Opinion / Etc
    • 동영상 / podcast / etc
    • Local stories : 로컬뉴스
    • Newscasts
      • 한 사건에 대해서 비디오 / 아티클 등을 Preview할 수 있는 형태
    1. Understand the full story
    • Full Coverage
      • Deep dive한 여러가지 관점 등등을 정리
      • Tab - Landing Page (Top coverage -> Local coverage -> Timeline -> FAQ (구글 서치에서 질문하는 것들) -> Opinion from Twitter -> Fact Check -> Analysis -> Videos)
  • 디자인 컨셉
    • 최대한 UX를 심플하게 가져가서 사용자가 내용에 집중하도록 도와줌
Share Comments

069.Block-Chain-Hackerthon

Block Chain Market Overview

  • 왜 코인들이 가상화폐로서 판매가 되고 있는가?

    • 암호화된 시스템을 유지하기 위해서 다수의 채굴이 필요하고, 채굴에 따른 보상을 주기 위해서 판매가 되고 있음
    • 실제로 그 자체로는 가치가 있기보다는 해당 코인들이 현금화된 가치를 가지기 위해서 거래소가 동작하게 됨.
  • IoT 관련 코인 : IoTA / Nano - DAG (+ Tangle)

    • 탱글 설명 https://steemit.com/coinkorea/@hanmomhanda/iota
    • 수십만 개나 되는 node들이 빠르게 검증될 수 있도록 하는 검증 알고리즘 방법
    • 현재 2,779,530,283 MIOTA : 2779조개 발행되어 있음
    • DAG의 경우는 수수료가 거의 없고, 채굴이 없이 검증이 가능함
    • 일반적인 스마트 컨트랙트에 대해서 지원이 안됨
  • IoTA 플랫폼 사용하고 있는 서비스

  • 기존의 코인들은 수수료가 엄청 크다

    • transaction당 최고 BTC : 10만원 / ETH : 1만원 (현재 몇천원)
    • But DAG는 0원에 수렴하는 수수료를 가지고 있다.
  • Solidity 튜토리얼 사이트

    • https://cryptozombies.io/ko/
    • 코드가 짧아야 한다 : 수수료를 instruction당 받음. 즉 어셈블리 레벨 코딩이 필요하다.
  • IPFS

    • 스토리지를 제공해주고 그에 따른 수수료 등을 제공해줌
    • ex) SiA Coin

궁금한 점들

  • coin과 token이 어떻게 다른 점인가요?
    • coin은 자체 플랫폼을 구성하고 있는 것
    • token은 한 Coin을 기반으로 해서 DApp 혹은 protocol을 구성하고 있는 것
Share Comments

learning Chinese

Chinese

TSCd

introduction to TSC

Share Comments

067.Spark_tutorial

  • 2017-06-27, Spark Day 2017

Spark bootcamp

  • 강사 : 임상배(오라클) / 권혁진(오라클)
  • Cover : Spark Core, Spark SQL, Spark Streaming

Spark 잡다한 이야기들

  • 2014년 이후로 Spark가 hadoop보다 관심도가 높아짐
  • Hadoop에 비해서 약 30배 정도의 성능을 보여줌
  • Spark는 전 세계적으로 1000개 이상의 조직에서 사용중

    • Data Scientist / Data Engineer의 전폭적인 사용
    • BI, Data warehousing, Log processing 등에 쓰임

  • Spark 활용 사례

    • Baidu : 1000대, 20,000코어, 100TB 램
    • Spark + Tachyon
      -> 50X Acceleration from ML in Hadoop
    • Toyota
    • 고객관리 / 소셜미디어 분석
    • 그외
    • 고객 행동기반 Segment : Netflix, ING, etc…
    • 게임 내 어뷰저 모니터링 및 검출 : LINE,

Architecture

  • Driver Program : 전체 자원 관리자
  • Cluster Manager : task 관리자 성격 (Mater = Cluster Manager)
  • Worker Node : 실제 task 동작 단위 (Slave = Worker)

RDD : Spark Operation Core

  • Keywords
    • Fault Recovery Results
    • Lineage : 계산 시 유실된 파티션을 기록하여 재수행할 수 있게 함
    • Lazy execution : 최적의 cost로 자원을 배치하여 수행 가능
    • Data sharing in RAM memory

Spark Hands On Session

  • virtualBox로 진행
  • sparkedu/sparkedu
  • vm 아이디 비번 raj_ops/raj_ops이나 admin/admin 시도해보세요~ 쉘의 경우에는 root/hadoop.

Spark SQL

Deep Learning on Spark

  • TensorflowOnSpark

    • 가장 범용적
    • Tensorflow 최근 코드를 제대로 따라오지 못하는 듯
  • CaffeOnSpark

    • 이미지에 굉장히 강함
    • 요즘은 많이 죽었음 : Yahoo가 운영을 포기
  • TensorFrame

    • 요즘 괜찮음 : Databricks 주도로 개발중
    • Native embedding of Tensorflow
  • DL4J

    • Java를 기반으로 Spark에서 Native하게 사용가능
    • 아직은 사용자 층이 얇아서 대응이 느림
  • BigDL

    • Intel의 주도 개발, 서버 CPU활용에 초점을 맞춰 개발됨
    • GPU보다도 CPU만 가지고도 높은 성능의 Deep Learning 학습 가능
    • 모델이 큰 용량인 빅데이터에 대해서 적용 수월
      • 그럼에도 불구하고 GPU가 비슷한 성능의 CPU보다 딥러닝에 있어서 30배 이상 빠르다. (Pascal Titan X vs Dual Xeon E5)

Spark on Kubernetes

  • Kubernetes = K8s
    • Open source Automation Framework
    • Why K8s?
      : Cluster Deployment에 관리가 좋음
    • Spark on K8s : Cluster 관리 시 추천
    • Mater / nodes 구조로 되어 있음

튜토리얼 세션

컨퍼런스 세션

Share Comments

problem solving : two tower problem

Two tower problem

  • DP + gredy problem

two tower problem jupyter notebook

backjoon.com two tower problem

C solution

set subsum

java solution

Share Comments

how to solve rubik's cube

rubiks cube solving jupyter notebook

github) rubiks cube : Magic cube : python

rubiks cube solution of fulmicoton : python

etc : kociemba solution : C/python


python package : pycuber

Share Comments

RCPy study note

Statistical Learning

  • This is a great book for the statistical approach on Machine Learning.

Staticstical learning vs Machine learning

  • Statistical learning is a subfield in Statistics.
  • Machine learning is a methodology in AI.
  • There are so much part of an intersection area between two of them.

Comments

  • 이 분야에서 통계 없이는 멀리 갈 수 없고, 코딩 실력 없이는 정확한 결과를 내기 힘듦.

NLTK

Natural Language Processing in Tool-Kit

NLTK installation

1
2
3
$ run sudo pip install -U nltk # Install NLTK
$ run sudo pip install -U numpy # Install Numpy (optional)
$ python -c "import nltk" # Test installation

An Introduction to Statistical Learning

pdf book

R tutorial markdown by psygement 김무성님

introduction to R chap.2

NLTK for python intallation

알콩파이 파일 드라이브

Share Comments

how to run R in jupyter, IRkernel

how to run R in jupyter

IRKernel

R을 terminal에서 아래와 같이 실행시키자. 반드시 터미널에서 실행해야 한다 (R studio 내부에서 하면 제대로 진행이 안됨)

1
2
3
install.packages(c('repr', 'IRdisplay', 'evaluate', 'crayon', 'pbdZMQ', 'devtools', 'uuid', 'digest'))
devtools::install_github('IRkernel/IRkernel')
IRkernel::installspec(user = FALSE)

그리고 난 다음에는 바로 jupyter를 키고 들어가보면 아래와 같이 jupyter에서 바로 R을 사용하는 것이 가능하다.

How to install IRKernel

Share Comments

R tutorial

execute R on a terminal of MAC

1
2
3
$ which R
/usr/local/bin/R
$ R
Share Comments