Upgrade to Pro — share decks privately, control downloads, hide ads and more …

[GDG DevFest Seoul 2018] Browsing Modern TensorFlow

Joongi Kim
November 10, 2018

[GDG DevFest Seoul 2018] Browsing Modern TensorFlow

Joongi Kim

November 10, 2018
Tweet

More Decks by Joongi Kim

Other Decks in Programming

Transcript

  1. +PPOHJ ,JN
    -BCMVQ*OD
    !BDIJNOPM
    +FPOHLZV4IJO
    -BCMVQ*OD
    !JOVSFZFT
    ,PSFB
    #SPXTJOH
    .PEFSO5FOTPS'MPX

    View Slide

  2. View Slide

  3. View Slide

  4. View Slide

  5. View Slide

  6. View Slide

  7. View Slide

  8. View Slide

  9. #FGPSF5FOTPS'MPX
    § 삲퍟 칺푷핞 헏 싳얺삫  홂핺퐢픚
    § $BGGF

    § 펾묺핞슲픒 퓒 핊짦쇪 옪믆앦짛 짷쩣 헪뫃
    § 컲헣핊 엶 뻞 슪
    § 5IFBOP _

    § 칺푷핞 슪 1ZUIPO픊옪 핟컿쇪 컲헣
    § ,FSBT _

    § .FUBGSBNFXPSL ˊ ˑ엖핒풚픦 엖핒풚˒
    § 4VQQPSUFE CBDLFOET
    § 5IFBOP EFGBVMU
    5FOTPS'MPX _
    .9/FU _
    $/5, _

    § FUD
    § 1BEEMF $IBJOFS %-+ ˘

    View Slide

  10. 5FOTPS'MPX
    § 삲퍟 믾몒킃 핟펓픒 퓒 폲콚큲 엖핒풚 짝 않핂쯚얺읺
    § (PPHMF펞컪 맪짪몮 뫃맪 뼒 풢 _

    § 힣
    § 1ZUIPO"1* MJLF5IFBOP

    § 핂 +BWB $ 슿뫊 맧픎 펆펂픦 OBUJWFCJOEJOH 헪뫃
    § 솧핟 몋
    § -JOVY NBD04
    § /7*%*"(16T 1BTDBM핂캏
    ".%(16T 'JKJ핂캏

    View Slide

  11. 5FOTPS'MPX팒쫂믾
    § 훊푢 몒 뼒 풢 믾훎

    § DPNNJUTTJODF%FD
    § DPOUSJCVUPST
    § QVMMSFRVFTUT
    § GPSLT 믊 맪풢

    § #PPUTUSBQ쫂삲 잜픚

    § 5FOTPS'MPX 뫎엶 (JU)VC 헎핳콚
    § 핺 캏
    § $PNQMFUF.-NPEFMQSPUPUZQJOH
    § %JTUSJCVUFEUSBJOJOH
    § $16(16516.PCJMFTVQQPSU
    § 5FOTPS'MPX4FSWJOH
    § 쫂삲 퀺풂 옮 컪찒큲 묺
    § 9-"DPNQJMFS _

    § 삲퍟 멭 짾 몋 짝 컿쁳 캏 헪뫃
    § ,FSBT "1*4VQQPSU _

    § 몮쿦훎 옪믆앦짛 "1* ,FSBT 

    § &BHFS&YFDVUJPO _

    § *OUFSBDUJWFNPEF
    § 칺푷핞 슪읊 펾칾믆앦많 팒삚 킲헪 1ZUIPO 슪옪 믗
    § 5FOTPS'MPX%BUBTFUT _

    § 섾핂 콚큲읊 삲욶믾 퓒 핂않핆 헪뫃

    View Slide

  12. 2016
    2017
    ⏤ TensorFlow Serving
    ⏤ Keras API
    ⏤ Eager Execution
    ⏤ TensorFlow Lite
    ⏤ XLA
    ⏤ OpenCL w/ OpenCompute
    ⏤ Distributed TensorFlow
    ⏤ Multi GPU support
    ⏤ Mobile TensorFlow
    ⏤ TensorFlow Datasets
    ⏤ SKLearn (contrib)
    ⏤ TensorFlow Slim
    ⏤ SyntaxNet
    ⏤ DRAGNN
    ⏤ TFLearn (contrib)
    ⏤ TensorFlow TimeSeries
    2018
    ⏤ TensorFlow Hub
    ⏤ Swift for TensorFlow
    ⏤ TensorFlow Models
    ⏤ ROCm TensorFlow (Test)
    5FOTPS'MPX펻칺
    ⏤ TensorRT integration

    View Slide

  13. 5FOTPS'MPX솧핟 짷킫
    § $16
    § .VMUJQSPDFTTPS
    § "79CBTFEBDDFMFSBUJPO
    § (16QBSUJODIJQ
    § 0QFO.1
    § (16
    § $6%" /7JEJB
    ➜ DV%//
    § 0QFO"- ".%
    ➜ $PNQVUF$11
    § 516 TU _ SE HFO

    § "4*$GPSNBUSJYDBMDVMBUJPO
    § *OIPVTFEFWFMPQNFOUCZ(PPHMF



    View Slide

  14. 5FOTPS'MPX 솧핟 짷킫
    § 1ZUIPOCVUOPU1ZUIPO
    § 1ZUIPO핂 믾쫆 "1* 펆펂
    § 펂쁢 $옪 핟컿
    (16 많콛픒 퓒 DV%// 푷

    § 몒칾 믆앦 $PNQVUBUJPO(SBQI

    § 칺푷핞 슪쁢 칺킲 슪많 팒삖않
    몒칾 믆앦 캫컿픒 퓒 컲헣핊 춞
    § 켆켦 믆앦읊 캫컿  믆멑픒
    $펂옪 킲
    § 싢쩒밓핂 펂엲풎

    View Slide

  15. 5FOTPS'MPX믊 많쇪 훊푢 믾쁳슲
    § 5FOTPS'MPX&TUJNBUPST W뼒 풢

    § )JHIMFWFM"1*GPSVTJOH NPEFMJOHXFMMLOPXOFTUJNBUPST
    § 5FOTPS'MPX4FSWJOH 쪒솒 옪헫

    § 5FOTPS'MPX,FSBTDPNQBUJCMF"1* W뼒 풢

    § 5FOTPS'MPX%BUBTFUT W뼒 풢

    § 5FOTPS'MPXFBHFSFYFDVUJPO W뼒 풢> 콚맪 W뼒 풢> 헣킫핺

    § 5FOTPS'MPXKT W뼒 풢

    § 4XJGUMBOHVBHFGPS5FOTPS'MPX W뼒 풢> 콚맪 뼒 헣킫핺

    § 5FOTPS'MPX)VC 뫃맪 쩮

    § 5FOTPS35 JOUFHSBUJPO
    § 'BTUFSUSBJOJOHPO/7*%*"(16T

    View Slide

  16. TensorFlow Serving
    § 옮 컪찒큲 엖핒풚
    § 뻚
    § Servables
    § Loaders
    § Managers
    § 훊푢 믾쁳
    § Model building
    § Model versioning
    § Model saving / loading
    § Online inference support with RPC

    View Slide

  17. Keras-compatible API for TensorFlow
    § Keras ( https://keras.io )
    § High-level API — Focus on user experience
    § “Deep learning accessible to everyone”
    § 펻칺
    § 2017뼒 2풢 짪
    § TensorFlow 1.2펞컪 contributor 힎옪 
    § TensorFlow 1.4쭎 헣킫 힎옪 킇멷
    § 힣
    § “Simplified workflow for TensorFlow users, more powerful features to Keras users”
    § 샎쭎쭒픦 Keras 슪많 믆샎옪  (keras. ̔ tf.keras.)
    § TensorFlow 슪퐎 Keras 슪읊 컬펂컪 칺푷 많쁳
    § tf.keras. 쁢 2.0쭎 팒폖 UG많 쇮 폖헣

    View Slide

  18. &BHFSFYFDVUJPO
    § 뼒 풢 핊 짪 뼒 풢 핊 헣킫핺
    § 5FOTPS'MPX 펾칾핞슲픒 슪많 킲쇮 쌚 흗킪 많
    § 맏 펾칾핞슲픎 짢옪 킲쇪 쿦읊 짦
    § 헪뫃
    § /VN1Z퐎 퓮칺 쿦 펾칾 슪 핟컿 많쁳
    § 핞솧 짆쭒 짝 (16 많콛 힎풞
    § 믾몒킃 킲v맪짪픒 퓒 퓮펾 앹
    § 핳헞
    § 1ZUIPO싢쩒밓 솒묺 칺푷 많쁳
    § 찮읆 폲윦 쫂몮
    § 헪펂묺혾 믆샎옪 헏푷
    § 1ZUIPO섾핂묺혾 푷

    View Slide

  19. 믆앦컪 뼒펞쁢 펂썲 쪎많

    View Slide

  20. 8IBUDPNFTJO
    5FOTPS'MPX%BUB
    5FOTPS'MPX)VC
    5FOTPS'MPXKT
    .-,JU

    View Slide

  21. 5FOTPS'MPX%BUB
    찮읂몮 퓮펾젾
    칺푷핂 읺 핓엳 핂않핆
    ,PSFB
    %FSFL.VSSFZ !NSSZ

    View Slide

  22. &5-GPS5FOTPS'MPX
    Transform
    Extract Load
    추출 변환 로드

    View Slide

  23. files = tf.data.Dataset.list_files(file_pattern)
    dataset = tf.data.TFRecordDataset(files)
    dataset = dataset.shuffle(10000)
    dataset = dataset.repeat(NUM_EPOCHS)
    dataset = dataset.map(lambda x: tf.parse_single_example(x,
    features))
    dataset = dataset.batch(BATCH_SIZE)
    iterator = dataset.make_one_shot_iterator()
    features = iterator.get_next()
    E
    T
    L

    View Slide

  24. files = tf.data.Dataset.list_files(file_pattern)
    dataset = tf.data.TFRecordDataset(files)
    dataset = dataset.shuffle(10000)
    dataset = dataset.repeat(NUM_EPOCHS)
    dataset = dataset.map(lambda x: tf.parse_single_example(x, features))
    dataset = dataset.batch(BATCH_SIZE)
    iterator = dataset.make_one_shot_iterator()
    features = iterator.get_next()

    View Slide

  25. files = tf.data.Dataset.list_files(file_pattern)
    dataset = tf.data.TFRecordDataset(files, num_parallel_reads=32)
    dataset = dataset.shuffle(10000)
    dataset = dataset.repeat(NUM_EPOCHS)
    dataset = dataset.map(lambda x: tf.parse_single_example(x, features))
    dataset = dataset.batch(BATCH_SIZE)
    iterator = dataset.make_one_shot_iterator()
    features = iterator.get_next()

    View Slide

  26. files = tf.data.Dataset.list_files(file_pattern)
    dataset = tf.data.TFRecordDataset(files, num_parallel_reads=32)
    dataset = dataset.apply(
    tf.contrib.data.shuffle_and_repeat(10000, NUM_EPOCHS))
    dataset = dataset.apply(
    tf.contrib.data.map_and_batch(lambda x: ..., BATCH_SIZE))
    iterator = dataset.make_one_shot_iterator()
    features = iterator.get_next()

    View Slide

  27. files = tf.data.Dataset.list_files(file_pattern)
    dataset = tf.data.TFRecordDataset(files, num_parallel_reads=32)
    dataset = dataset.apply(
    tf.contrib.data.shuffle_and_repeat(10000, NUM_EPOCHS))
    dataset = dataset.apply(
    tf.contrib.data.map_and_batch(lambda x: ..., BATCH_SIZE))
    dataset = dataset.apply(tf.contrib.data.prefetch_to_device("/gpu:0"))
    iterator = dataset.make_one_shot_iterator()
    features = iterator.get_next()

    View Slide

  28. files = tf.data.Dataset.list_files(file_pattern)
    dataset = tf.data.TFRecordDataset(files, num_parallel_reads=32)
    dataset = dataset.apply(
    tf.contrib.data.shuffle_and_repeat(10000, NUM_EPOCHS))
    dataset = dataset.apply(
    tf.contrib.data.map_and_batch(lambda x: ..., BATCH_SIZE))
    dataset = dataset.apply(tf.contrib.data.prefetch_to_device("/gpu:0"))
    iterator = dataset.make_one_shot_iterator()
    features = iterator.get_next()
    Check out Brennan’s talk to learn more! https://www.youtube.com/watch?v=SxOsJPaxHME

    View Slide

  29. 5')VC
    엶쇪 슪 뫃퓮읊 퓒
    젆킮얺삫 쯚
    ,PSFB
    +FSFNJBI)BSNTFO "OESFX(BTQBSPWJD

    View Slide

  30. 5FOTPS'MPX)VC.-뫃퓮
    Repositories

    View Slide

  31. 5FOTPS'MPX)VC.-뫃퓮
    TensorFlow
    Hub

    View Slide

  32. 젆킮얺삫픦 푢콚
    섾핂
    팚몮읺흦 헒줆힎킫
    펾칾

    View Slide

  33. 젆킮얺삫 뫃퓮
    Module
    TensorFlow
    Hub
    Model

    View Slide

  34. 졶슖픎 짆읺 엶쇪 많훟 짝 믆앦읊 샂몮 핖픚

    View Slide

  35. 졶슖픎 혾많쁳몮 핺칺푷 많쁳몮 핺엶핂 많쁳

    View Slide

  36. tensorflow.org/hub

    View Slide

  37. # Download and use NASNet feature vector module.
    module = hub.Module(
    "https://tfhub.dev/google/imagenet/nasnet_large/feature_vector/1")
    features = module(my_images)
    logits = tf.layers.dense(features, NUM_CLASSES)
    probabilities = tf.nn.softmax(logits)
    62,000+ GPU 시간!
    젆킮얺삫 뫃퓮*NBHF/FU

    View Slide

  38. # Download and use NASNet feature vector module.
    module = hub.Module(
    "https://tfhub.dev/google/imagenet/nasnet_large/feature_vector/1",
    trainable=True, tags={“train”})
    features = module(my_images)
    logits = tf.layers.dense(features, NUM_CLASSES)
    probabilities = tf.nn.softmax(logits)

    View Slide

  39. # Use pre-trained universal sentence encoder to build text vector column.
    review = hub.text_embedding_column(
    "review", "https://tfhub.dev/google/universal-sentence-encoder/1")
    features = {
    "review": np.array(["an arugula masterpiece", "inedible shoe leather", ...])
    }
    labels = np.array([[1], [0], ...])
    input_fn = tf.estimator.input.numpy_input_fn(features, labels, shuffle=True)
    estimator = tf.estimator.DNNClassifier(hidden_units, [review])
    estimator.train(input_fn, max_steps=100)
    젆킮얺삫 뫃퓮6OJWFSTBM4FOUFODF&ODPEFS

    View Slide

  40. # Use pre-trained universal sentence encoder to build text vector column.
    review = hub.text_embedding_column(
    "review", "https://tfhub.dev/google/universal-sentence-encoder/1",
    trainable=True)
    features = {
    "review": np.array(["an arugula masterpiece", "inedible shoe leather", ...])
    }
    labels = np.array([[1], [0], ...])
    input_fn = tf.estimator.input.numpy_input_fn(features, labels, shuffle=True)
    estimator = tf.estimator.DNNClassifier(hidden_units, [review])
    estimator.train(input_fn, max_steps=100)
    젆킮얺삫 뫃퓮6OJWFSTBM4FOUFODF&ODPEFS

    View Slide

  41. # Use pre-trained universal sentence encoder to build text vector column.
    review = hub.text_embedding_column(
    "review", "https://tfhub.dev/google/universal-sentence-encoder/1")
    features = {
    "review": np.array(["an arugula masterpiece", "inedible shoe leather", ...])
    }
    labels = np.array([[1], [0], ...])
    input_fn = tf.estimator.input.numpy_input_fn(features, labels, shuffle=True)
    estimator = tf.estimator.DNNClassifier(hidden_units, [review])
    estimator.train(input_fn, max_steps=100)
    젆킮얺삫 뫃퓮6OJWFSTBM4FOUFODF&ODPEFS

    View Slide

  42. 5FOTPS'MPXKT
    쯚않푾헎 엖쩶펞컪픦
    펞힎 싢짢핂큲 젆킮얺삫
    ,PSFB

    View Slide

  43. 쯚않푾헎 믾몒킃
    § 쩖먾옪풎핂 펔쁢 젆킮얺삫
    § 젆킮얺삫픒 퓒 핺욚 몒칾 섾핂 팚몮읺흦
    § 9-"삲퍟 몋펞컪픦 짢핂뻖읺 엖쩶 헏 힎풞
    § 옪큲 앹  몋핂 핖픒밚
    § +BWB 퓇쯚않푾헎
    § 믊픦 퓇쯚않푾헎 짪헒슲
    § 8FC(-
    § 삲퍟 (16믾믾슲펞 샎픟쁢 핊쇪 옪믆앦짛 몋
    § 8FC"TTFNCMZ
    § 짢핂뻖읺 엖쩶 헏
    § 졶슮 훊푢 쯚않푾헎펞 핺

    View Slide

  44. 5FOTPS'MPXKT
    § 뼒 풢 핊 뫃맪
    § %FFQMFBSOKT ̔ 5FOTPS'MPXKT
    § 1ZUIPO 쩒헒뫊 퓮칺 "1* 헪뫃
    § 훊푢 믾쁳
    § 쯚않푾헎펞컪 옮 펾칾
    § 믾홂 5' 졶셆픒 5'KT 졶셆옪 쪎
    § pip install tensorflowjs
    § OPEFKT 믾짦 TDBMJOH

    View Slide

  45. .-,JU
    'JSFCBTF퐎 쇪
    젆킮얺삫 4%,
    ,PSFB

    View Slide

  46. ONNX (Open Neural Network Exchange)
    Microsoft / Facebook (Sep. 2017)
    Caffe 2 + PyTorch (Facebook), CNTK (Microsoft)
    MLMODEL (Code ML model, Machine Learning Model)
    Apple (Aug. 2017)
    Caffe, Keras, scikit-learn, LIBSVM (Open Source)
    Provides Core ML converter / specification

    View Slide

  47. View Slide

  48. View Slide

  49. View Slide

  50. .-,JU픎
    J04 짝 팖슪옪핂슪 4%,
    믾쫆 "1*슲 짝 재 졶셆 힎풞
    믾믾펞컪 짢옪 킲 짝 묺믎 않푾슪 "*옮 "1*
    'JSFCBTF퐎픦 맣 

    View Slide

  51. View Slide

  52. View Slide

  53. 큲 핆킫 핂짆힎 않쩶잏 짢슪 큲 펊뭂 핆킫 앪슪잖 핆킫
    믾쫆 "1*슲
    킲푷헏픊옪 튾핂쁢 맒삶 "1*

    View Slide

  54. 재 졶셆 힎풞
    솧헏 졶셆 삲풂옪슪
    'JSFCBTF믾짦픦 "# 큲
    졶셆 쪎 짝 팣 킪 폖헣

    큲 졶셆픒 맒삶멚 칺푷믾

    View Slide

  55. 'JSFCBTF콢펞컪 .- ,JU 칺푷

    View Slide

  56. View Slide

  57. 8IBUXJMMDPNFJO
    5FOTPS'MPX
    "OENPSF

    View Slide

  58. 5FOTPS'MPX
    ,FSBT퐎픦 픒 
    틺 읺 맪짪 줆쩣
    ,PSFB

    View Slide

  59. 5FOTPS'MPX
    § 뼒 풢 핊 옪슪쟃 뫃맪
    § 맪짪 칺푷 퍟펞컪픦 칺푷컿 맪컮핂 졷
    § 맪짪 픦컿 맪컮
    § &BHFS 졶슪많 믾쫆 줆쩣핂 쇶 믾홂 슪읊 퓒 쪎 솒묺 힎풞

    § 뻲핒큲핂큲픦 핊뫎컿 퓮힎
    § tf.contrib 많 펔펂힞
    § 훊푢 슪슲픎 tf. 퓒옪 슲펂퐎컪 킺 슪옪 뫎읺
    § 믆 짤픦 슪슲픎 젢핆 슪펞컪 헪먾
    § "1* 샎샎헏 헣읺
    § 삲퍟 슪슲픒 짩팒슲핂젾 솧핊 믾쁳픒 쁢 펺얺 "1*많 홂핺
    § 빦틷잚 빶믾몮 졶숞 헪먾
    § 펆헪
    § 폺 팖펞˘

    View Slide

  60. 믆읺몮˘
    § 5FOTPS'MPXKT OPEFKT 5FOTPS'MPX 1ZUIPO

    § 삶잞 싢짢핂큲펞컪쁢 +BWB4DSJQU옪 핂푷
    § 컪쩒옪 뻦밆 쌚쁢 OPEFKT 믾짦픦 컪쩒읊 몋퓮펺 5FOTPS'MPX컪쩒펞 푢
    § .-,JU'JSF#BTF
    § 큲잖펞컪쁢 .-,JU 믾짦픊옪 5FOTPS'MPXMJUF졶셆 킲
    § 푢펞 싾않 컪쩒칺핂슪 펾칾 짝 졶셆 펓섾핂읊 'JSF#BTF읊  킲

    View Slide

  61.  폖 짝 핂큖슲
    § 6OJUZ*OUFHSBUJPOGPS3-FOWJSPONFOU
    § 맣킃픒 퓒 킪쥺엖핂켦 몋픊옪 6OJUZ 칺푷 믾쁳 
    § 옪쫕 짝 킇푷 싢짢핂큲슿픦 엶 몋
    § 폶않핆 멚핒 뺂픦 "* 몋 슿
    § 1Z5PSDI퐎픦 훊솒뭚 몋햏
    § 뿒많뿒많 섢 많
    § 칺푷컿 졶셆 맪짪펞 멆읺쁢 킪맒
    § 핳컿 졶짢핊컪쩒맒 
    § 폖캏 펾묺쭒퍊펞컪쁢 1Z5PSDI 픟푷맪짪 쭒퍊펞컪쁢 5FOTPS'MPX

    View Slide

  62. 8IBUXJMMDPNFJO
    5FOTPS'MPX
    "OENPSF˘
    8IBUDPNFTJO
    5FOTPS'MPX%BUB
    5FOTPS'MPX)VC
    5FOTPS'MPXKT
    .-,JU
    #SJFGJOUSPEVDUJPOPG5FOTPS'MPX

    View Slide

  63. ,PSFB
    맞칺삖삲

    View Slide

  64. 2"
    ,PSFB

    View Slide