{"id":2380,"date":"2019-12-04T03:00:25","date_gmt":"2019-12-03T18:00:25","guid":{"rendered":"https:\/\/julialang.kr\/?p=2380"},"modified":"2019-12-04T03:00:30","modified_gmt":"2019-12-03T18:00:30","slug":"tip-julia%ec%97%90-tensorflow-%ec%bb%a4%ec%8a%a4%ed%85%80-%eb%b9%8c%eb%93%9c-%eb%b0%8f-%ec%84%a4%ec%b9%98","status":"publish","type":"post","link":"https:\/\/julialang.kr\/?p=2380","title":{"rendered":"[Tip] Julia\uc5d0 TensorFlow \ucee4\uc2a4\ud140 \ube4c\ub4dc \ubc0f \uc124\uce58"},"content":{"rendered":"\n<p>Julia\uc5d0 TensorFlow\uc744 \uc124\uce58\uc2dc \ud2b9\ud788 GPU \uc9c0\uc6d0 \ubc84\uc804 \uc124\uce58\uc2dc \ub0b4 \uc11c\ubc84\uc5d0 \uc124\uce58\ub41c cuda \ubc84\uc804\uacfc \ucd94\uac00\ud55c tensorflow build \ubc84\uc804\uc774 \ub9de\uc9c0 \uc54a\ub294 \uacbd\uc6b0<\/p>\n\n\n\n<p>\ucee4\uc2a4\ud140\uc73c\ub85c tensorflow\ub97c \ube4c\ub4dc \ud558\uace0 \ud6c4\uc18d \uc791\uc5c5\uc744 \ud574\uc57c \ud55c\ub2e4.<\/p>\n\n\n\n<p>\uba3c\uc800 Julia TensorFlow \ud328\ud0a4\uc9c0\ub97c \uc124\uce58 \ud558\uace0 GPU \ubc84\uc804\uc73c\ub85c \ucef4\ud30c\uc77c \ud55c\ub2e4.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>Julia>ENV&#91;\"TF_USE_GPU\"] = \"1\"\nPkg>add TensorFlow#master\nPkg>build TensorFlow<\/code><\/pre>\n\n\n\n<p>\ube4c\ub4dc\ub41c TensorFlow \uc774\ubbf8\uc9c0\ub294 \uc608\ub97c \ub4e4\uc5b4  \/home\/shpark\/.julia\/packages\/TensorFlow\/JljDB\/deps\/usr\/bin  \uc5d0 \uc0dd\uc131\ub41c\ub2e4.<\/p>\n\n\n\n<p>\uc815\uc0c1\uc801\uc73c\ub85c \uc0dd\uc131\ub418\uba74 \uc544\ub798 \ub450\uac1c\uc758 \ud30c\uc77c\uc774 \uc0dd\uc131\ub41c\ub2e4<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>libtensorflow.so \nlibtensorflow_framework.so <\/code><\/pre>\n\n\n\n<p>Julia\uc5d0\uc11c \uc544\ub798 \ucf54\ub4dc\ub97c \uc2e4\ud589 \ud588\uc744 \ub54c \uc5d0\ub7ec\ub098 \ud604\uc81c \uc124\uce58\ub41c cuda\ubc84\uc804\uacfc \ub2e4\ub978 \ub77c\uc774\ube0c\ub7ec\ub9ac\ub97c \ucc3e\ub294\ub2e4\uba74 \uc704\uc758 .so \ub77c\uc774\ube0c\ub7ec\ub9ac\ub97c \uc0ad\uc81c\ud558\uace0<\/p>\n\n\n\n<p>\ucee4\uc2a4\ud140 \ube4c\ub4dc\ub97c \ud55c\ub2e4.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>Julia> using TensorFlow\nJulia> TensorFlow.Session()<\/code><\/pre>\n\n\n\n<p>Tensorflow 1.10 ~ 1.12 \ubc84\uc804\uc740 Bazel \ubc84\uc804 0.18 \ubc84\uc804\uc73c\ub85c \ube4c\ub4dc \ud55c\ub2e4<\/p>\n\n\n\n<p>1.3 \uc774 \ud6c4 \ubd80\ucc98 Bazel 0.26.1 \ub85c \ud55c\ub2e4<\/p>\n\n\n\n<p>\uae30\uc874\uc5d0 \ub192\uc740 \ubc84\uc804\uc758 Bazel\uc774 \uc124\uce58 \ub418\uc5b4 \uc788\ub2e4\uba74  \uc544\ub798\uc640 \uac19\uc774 \uc0ad\uc81c \ud55c\ub2e4.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>bazel shutdown\nrm $HOME\/.cache\/bazel -fr \nsudo rm \/usr\/local\/bin\/bazel \/etc\/bazelrc \/usr\/local\/lib\/bazel -fr<\/code><\/pre>\n\n\n\n<p><a rel=\"noreferrer noopener\" aria-label=\" (\uc0c8\ud0ed\uc73c\ub85c \uc5f4\uae30)\" href=\"https:\/\/releases.bazel.build\/0.18.1\/release\/\" target=\"_blank\">Bazel 0.26<\/a><a rel=\"noreferrer noopener\" aria-label=\" (\uc0c8\ud0ed\uc73c\ub85c \uc5f4\uae30)\" href=\"https:\/\/releases.bazel.build\/0.26.1\/release\/\" target=\"_blank\">.1 \ub2e4\uc6b4\ub85c\ub4dc<\/a> (\ub354 \ub192\uc740 \ubc84\uc804\uc5d0\uc11c\ub294 \ube4c\ub4dc\uac00 \uc548\ub428)<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>wget https:\/\/releases.bazel.build\/0.26.1\/release\/bazel-0.26.1-installer-linux-x86_64.sh\nchmod +x bazel-0.26.1-installer-linux-x86_64.sh\n.\/bazel-0.26.1-installer-linux-x86_64.sh --user<\/code><\/pre>\n\n\n\n<p><a rel=\"noreferrer noopener\" aria-label=\" (\uc0c8\ud0ed\uc73c\ub85c \uc5f4\uae30)\" href=\"https:\/\/github.com\/tensorflow\/tensorflow\/archive\/v1.13.1.tar.gz\" target=\"_blank\">Tensorflow 1.13.1\ub2e4\uc6b4\ub85c\ub4dc<\/a> <br>\ube4c\ub4dc\ub97c \uc704\ud574 nccl\ub3c4 \ud544\uc694 \ud558\ub2e4<br><a rel=\"noreferrer noopener\" aria-label=\"nccl \ub2e4\uc6b4\ub85c\ub4dc (\uc0c8\ud0ed\uc73c\ub85c \uc5f4\uae30)\" href=\"https:\/\/github.com\/NVIDIA\/nccl\" target=\"_blank\">nccl \ub2e4\uc6b4\ub85c\ub4dc<\/a> \uc5d0\uc11c \ud30c\uc77c\uc744 \ubc1b\uc544 \ube4c\ub4dc \ud55c\ub2e4. <\/p>\n\n\n\n<p>\ube4c\ub4dc \ud6c4 \uc544\ub798\uc640 \uac19\uc774 nccl \ub77c\uc774\ube0c\ub7ec\ub9ac\ub97c \ubcf5\uc0ac \ud574\uc900\ub2e4<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>cd build\nsudo mkdir -p \/usr\/local\/cuda\/nccl\/lib \/usr\/local\/cuda\/nccl\/include\nsudo cp *.txt \/usr\/local\/cuda\/nccl\nsudo cp include\/*.h \/usr\/include\/\nsudo cp lib\/libnccl.so.2.5.6 lib\/libnccl_static.a \/usr\/lib\/x86_64-linux-gnu\/\nsudo ln -s \/usr\/include\/nccl.h \/usr\/local\/cuda\/nccl\/include\/nccl.h\ncd \/usr\/lib\/x86_64-linux-gnu\nsudo ln -s libnccl.so.2.5.6 libnccl.so.2\nsudo ln -s libnccl.so.2 libnccl.so\nfor i in libnccl*; do sudo ln -s \/usr\/lib\/x86_64-linux-gnu\/$i \/usr\/local\/cuda\/nccl\/lib\/$i; done<\/code><\/pre>\n\n\n\n<p>\ubc1b\uc740 Tensorflow\ub97c \ud480\uace0 tensorflow \ud3f4\ub354\ub85c \uc774\ub3d9\ud55c\ub2e4.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>.\/configure\nDo you wish to build TensorFlow with CUDA support? &#91;y\/N]:y<\/code><\/pre>\n\n\n\n<p>Tensorflow build<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>bazel build --config=opt --config=cuda  --cxxopt=\"-D_GLIBCXX_USE_CXX11_ABI=0\" \/\/tensorflow:libtensorflow.so<\/code><\/pre>\n\n\n\n<p>Build\uc644\ub8cc \ud6c4 (Tensorflow package\uc758 \ub77c\uc774\ube0c\ub7ec\ub9ac\uac00 \ubcf5\uc0ac\ub418\ub294 \uacf3(\uc608\uc2dc)  \u00a0\/home\/shpark\/.julia\/packages\/TensorFlow\/JljDB\/deps\/usr\/bin )<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>bazel shutdown\ncd bazel-bin\/tensorflow\ncp -a * \/home\/shpark\/.julia\/packages\/TensorFlow\/JljDB\/deps\/usr\/bin\ncd \/home\/shpark\/.julia\/packages\/TensorFlow\/JljDB\/deps\/usr\/bin\ncd ln -s libtensorflow_framework.so.2 libtensorflow_framework.so\nls -al\nlrwxrwxrwx  1 shpark shpark        28 Dec  4 02:33 libtensorflow_framework.so -> libtensorflow_framework.so.2*\nlrwxrwxrwx  1 shpark shpark        32 Dec  4 02:26 libtensorflow_framework.so.2 -> libtensorflow_framework.so.2.0.0*\n-r-xr-xr-x  1 shpark shpark  34342328 Dec  4 02:26 libtensorflow_framework.so.2.0.0*\n-r-xr-xr-x  1 shpark shpark     22121 Dec  4 01:54 libtensorflow_framework.so.2.0.0-2.params*\nlrwxrwxrwx  1 shpark shpark        18 Dec  4 02:27 libtensorflow.so -> libtensorflow.so.2*\nlrwxrwxrwx  1 shpark shpark        22 Dec  4 02:27 libtensorflow.so.2 -> libtensorflow.so.2.0.0*\n-r-xr-xr-x  1 shpark shpark 539673528 Dec  4 02:27 libtensorflow.so.2.0.0*\n-r-xr-xr-x  1 shpark shpark    143213 Dec  4 01:55 libtensorflow.so.2.0.0-2.params*<\/code><\/pre>\n\n\n\n<p>Julia\uc5d0\uc11c \uc544\ub798\ucf54\ub4dc \uc2e4\ud589\uc2dc<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>Julia> using TensorFlow\nJulia> TensorFlow.Session()<\/code><\/pre>\n\n\n\n<p>\uc544\ub798\uc640 \uac19\uc774 GPU \uc815\ubcf4\uac00 \ub098\uc624\uba74 \uc131\uacf5 \ud55c\uac83\uc784<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>2019-12-04 02:38:29.094119: I tensorflow\/core\/platform\/profile_utils\/cpu_utils.cc:94] CPU Frequency: 2598210000 Hz\n2019-12-04 02:38:29.096951: I tensorflow\/compiler\/xla\/service\/service.cc:168] XLA service 0x3569360 initialized for platform Host (this does not guarantee that XLA will be used). Devices:\n2019-12-04 02:38:29.096994: I tensorflow\/compiler\/xla\/service\/service.cc:176]   StreamExecutor device (0): Host, Default Version\n2019-12-04 02:38:29.100743: I tensorflow\/stream_executor\/platform\/default\/dso_loader.cc:44] Successfully opened dynamic library libcuda.so.1\n2019-12-04 02:38:29.648171: I tensorflow\/core\/common_runtime\/gpu\/gpu_device.cc:1551] Found device 0 with properties:\nname: TITAN Xp major: 6 minor: 1 memoryClockRate(GHz): 1.582\npciBusID: 0000:05:00.0\n2019-12-04 02:38:29.649442: I tensorflow\/core\/common_runtime\/gpu\/gpu_device.cc:1551] Found device 1 with properties:\nname: TITAN Xp major: 6 minor: 1 memoryClockRate(GHz): 1.582\npciBusID: 0000:06:00.0\n2019-12-04 02:38:29.650699: I tensorflow\/core\/common_runtime\/gpu\/gpu_device.cc:1551] Found device 2 with properties:\nname: TITAN Xp major: 6 minor: 1 memoryClockRate(GHz): 1.582\npciBusID: 0000:09:00.0\n2019-12-04 02:38:29.651941: I tensorflow\/core\/common_runtime\/gpu\/gpu_device.cc:1551] Found device 3 with properties:\nname: TITAN Xp major: 6 minor: 1 memoryClockRate(GHz): 1.582\npciBusID: 0000:0a:00.0\n2019-12-04 02:38:29.652168: I tensorflow\/stream_executor\/platform\/default\/dso_loader.cc:44] Successfully opened dynamic library libcudart.so.10.1\n2019-12-04 02:38:29.653514: I tensorflow\/stream_executor\/platform\/default\/dso_loader.cc:44] Successfully opened dynamic library libcublas.so.10\n2019-12-04 02:38:29.654750: I tensorflow\/stream_executor\/platform\/default\/dso_loader.cc:44] Successfully opened dynamic library libcufft.so.10\n2019-12-04 02:38:29.654994: I tensorflow\/stream_executor\/platform\/default\/dso_loader.cc:44] Successfully opened dynamic library libcurand.so.10\n2019-12-04 02:38:29.656261: I tensorflow\/stream_executor\/platform\/default\/dso_loader.cc:44] Successfully opened dynamic library libcusolver.so.10\n2019-12-04 02:38:29.656903: I tensorflow\/stream_executor\/platform\/default\/dso_loader.cc:44] Successfully opened dynamic library libcusparse.so.10\n2019-12-04 02:38:29.659538: I tensorflow\/stream_executor\/platform\/default\/dso_loader.cc:44] Successfully opened dynamic library libcudnn.so.7\n2019-12-04 02:38:29.671761: I tensorflow\/core\/common_runtime\/gpu\/gpu_device.cc:1679] Adding visible gpu devices: 0, 1, 2, 3\n2019-12-04 02:38:29.671796: I tensorflow\/stream_executor\/platform\/default\/dso_loader.cc:44] Successfully opened dynamic library libcudart.so.10.1\n2019-12-04 02:38:29.677085: I tensorflow\/core\/common_runtime\/gpu\/gpu_device.cc:1092] Device interconnect StreamExecutor with strength 1 edge matrix:\n2019-12-04 02:38:29.677102: I tensorflow\/core\/common_runtime\/gpu\/gpu_device.cc:1098]      0 1 2 3\n2019-12-04 02:38:29.677111: I tensorflow\/core\/common_runtime\/gpu\/gpu_device.cc:1111] 0:   N Y Y Y\n2019-12-04 02:38:29.677117: I tensorflow\/core\/common_runtime\/gpu\/gpu_device.cc:1111] 1:   Y N Y Y\n2019-12-04 02:38:29.677124: I tensorflow\/core\/common_runtime\/gpu\/gpu_device.cc:1111] 2:   Y Y N Y\n2019-12-04 02:38:29.677130: I tensorflow\/core\/common_runtime\/gpu\/gpu_device.cc:1111] 3:   Y Y Y N\n2019-12-04 02:38:29.687338: I tensorflow\/core\/common_runtime\/gpu\/gpu_device.cc:1237] Created TensorFlow device (\/job:localhost\/replica:0\/task:0\/device:GPU:0 with 11436 MB memory) -> physical GPU (device: 0, name: TITAN Xp, pci bus id: 0000:05:00.0, compute capability: 6.1)\n2019-12-04 02:38:29.690090: I tensorflow\/core\/common_runtime\/gpu\/gpu_device.cc:1237] Created TensorFlow device (\/job:localhost\/replica:0\/task:0\/device:GPU:1 with 11439 MB memory) -> physical GPU (device: 1, name: TITAN Xp, pci bus id: 0000:06:00.0, compute capability: 6.1)\n2019-12-04 02:38:29.692745: I tensorflow\/core\/common_runtime\/gpu\/gpu_device.cc:1237] Created TensorFlow device (\/job:localhost\/replica:0\/task:0\/device:GPU:2 with 11439 MB memory) -> physical GPU (device: 2, name: TITAN Xp, pci bus id: 0000:09:00.0, compute capability: 6.1)\n2019-12-04 02:38:29.695417: I tensorflow\/core\/common_runtime\/gpu\/gpu_device.cc:1237] Created TensorFlow device (\/job:localhost\/replica:0\/task:0\/device:GPU:3 with 11439 MB memory) -> physical GPU (device: 3, name: TITAN Xp, pci bus id: 0000:0a:00.0, compute capability: 6.1)\nSession(Ptr{Nothing} @0x00007ff5a081c070)\n<\/code><\/pre>\n\n\n\n<p>\uadf8\ub9ac\uace0 \uc544\ub798\uc640 \uac19\uc774 \ud655\uc778 \ud574\ubcfc \uc218\ub3c4 \uc788\ub2e4. \uc704 \ucf54\ub4dc\ub97c \uc2e4\ud589 \ud558\uba74 julia\uc544 GPU\uba54\ubaa8\ub9ac\ub97c \ucc28\uc9c0 \ud55c\uac83\uc774 \ubcf4\uc778\ub2e4.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>$ nvidia-smi\nWed Dec  4 02:57:46 2019\n+-----------------------------------------------------------------------------+\n| NVIDIA-SMI 418.87.00    Driver Version: 418.87.00    CUDA Version: 10.1     |\n|-------------------------------+----------------------+----------------------+\n| GPU  Name        Persistence-M| Bus-Id        Disp.A | Volatile Uncorr. ECC |\n| Fan  Temp  Perf  Pwr:Usage\/Cap|         Memory-Usage | GPU-Util  Compute M. |\n|===============================+======================+======================|\n|   0  TITAN Xp            On   | 00000000:05:00.0 Off |                  N\/A |\n|  0%   21C    P8    15W \/ 250W |    155MiB \/ 12193MiB |      0%      Default |\n+-------------------------------+----------------------+----------------------+\n|   1  TITAN Xp            On   | 00000000:06:00.0 Off |                  N\/A |\n|  0%   21C    P8     8W \/ 250W |    155MiB \/ 12196MiB |      0%      Default |\n+-------------------------------+----------------------+----------------------+\n|   2  TITAN Xp            On   | 00000000:09:00.0 Off |                  N\/A |\n|  0%   22C    P8     8W \/ 250W |    155MiB \/ 12196MiB |      0%      Default |\n+-------------------------------+----------------------+----------------------+\n|   3  TITAN Xp            On   | 00000000:0A:00.0 Off |                  N\/A |\n|  0%   18C    P8     7W \/ 250W |    155MiB \/ 12196MiB |      0%      Default |\n+-------------------------------+----------------------+----------------------+\n\n+-----------------------------------------------------------------------------+\n| Processes:                                                       GPU Memory |\n|  GPU       PID   Type   Process name                             Usage      |\n|=============================================================================|\n|    0     17252      C   julia                                        145MiB |\n|    1     17252      C   julia                                        145MiB |\n|    2     17252      C   julia                                        145MiB |\n|    3     17252      C   julia                                        145MiB |\n+-----------------------------------------------------------------------------+\n<\/code><\/pre>\n","protected":false},"excerpt":{"rendered":"<p>Julia\uc5d0 TensorFlow\uc744 \uc124\uce58\uc2dc \ud2b9\ud788 GPU \uc9c0\uc6d0 \ubc84\uc804 \uc124\uce58\uc2dc \ub0b4 \uc11c\ubc84\uc5d0 \uc124\uce58\ub41c cuda \ubc84\uc804\uacfc \ucd94\uac00\ud55c tensorflow build \ubc84\uc804\uc774 \ub9de\uc9c0 \uc54a\ub294 \uacbd\uc6b0 \ucee4\uc2a4\ud140\uc73c\ub85c tensorflow\ub97c \ube4c\ub4dc \ud558\uace0 \ud6c4\uc18d \uc791\uc5c5\uc744 \ud574\uc57c \ud55c\ub2e4. \uba3c\uc800 Julia TensorFlow \ud328\ud0a4\uc9c0\ub97c \uc124\uce58 \ud558\uace0 GPU \ubc84\uc804\uc73c\ub85c \ucef4\ud30c\uc77c \ud55c\ub2e4. \ube4c\ub4dc\ub41c TensorFlow \uc774\ubbf8\uc9c0\ub294 \uc608\ub97c \ub4e4\uc5b4 \/home\/shpark\/.julia\/packages\/TensorFlow\/JljDB\/deps\/usr\/bin \uc5d0 \uc0dd\uc131\ub41c\ub2e4. \uc815\uc0c1\uc801\uc73c\ub85c \uc0dd\uc131\ub418\uba74 \uc544\ub798 \ub450\uac1c\uc758 \ud30c\uc77c\uc774 \uc0dd\uc131\ub41c\ub2e4 Julia\uc5d0\uc11c \uc544\ub798 \ucf54\ub4dc\ub97c [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"site-sidebar-layout":"default","site-content-layout":"default","ast-site-content-layout":"","site-content-style":"default","site-sidebar-style":"default","ast-global-header-display":"","ast-banner-title-visibility":"","ast-main-header-display":"","ast-hfb-above-header-display":"","ast-hfb-below-header-display":"","ast-hfb-mobile-header-display":"","site-post-title":"","ast-breadcrumbs-content":"","ast-featured-img":"","footer-sml-layout":"","theme-transparent-header-meta":"default","adv-header-id-meta":"","stick-header-meta":"","header-above-stick-meta":"","header-main-stick-meta":"","header-below-stick-meta":"","astra-migrate-meta-layouts":"default","ast-page-background-enabled":"default","ast-page-background-meta":{"desktop":{"background-color":"","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"tablet":{"background-color":"","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"mobile":{"background-color":"","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""}},"ast-content-background-meta":{"desktop":{"background-color":"var(--ast-global-color-5)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"tablet":{"background-color":"var(--ast-global-color-5)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"mobile":{"background-color":"var(--ast-global-color-5)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""}},"footnotes":""},"categories":[24],"tags":[],"_links":{"self":[{"href":"https:\/\/julialang.kr\/index.php?rest_route=\/wp\/v2\/posts\/2380"}],"collection":[{"href":"https:\/\/julialang.kr\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/julialang.kr\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/julialang.kr\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/julialang.kr\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=2380"}],"version-history":[{"count":3,"href":"https:\/\/julialang.kr\/index.php?rest_route=\/wp\/v2\/posts\/2380\/revisions"}],"predecessor-version":[{"id":2383,"href":"https:\/\/julialang.kr\/index.php?rest_route=\/wp\/v2\/posts\/2380\/revisions\/2383"}],"wp:attachment":[{"href":"https:\/\/julialang.kr\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=2380"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/julialang.kr\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=2380"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/julialang.kr\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=2380"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}