【AI】知らないの?データバージョン管理ツール「DVC」とS3を連携する方法
概要
DeepLearningを含む機械学習では学習済みモデルを使用します。 学習済みモデルはデータ量が大きく、github等のコード管理ツールでは管理が難しいです。 そこで便利なのがデータバージョン管理ツール「DVC」になります。 今回はその「DVC」をAWSのS3と連携して使用する方法について簡単に紹介します。
前提
設定
pip install dvc["s3"] dvc init dvc remote add -d {name} s3://{bucket}/{prefix}
ファイルやフォルダの追加
dvc add {file path} dvc push
ファイルやフォルダの取得
dvc pull
最後に
いかがでしょうか?こんなに簡単にデータを管理できるとは良い時代ですね! どんどんモデルを作って管理していきましょう!
【Kotlin】Windowsセットアップ手順 2021/7時点
WindowsでKotlinをセットアップする手順を紹介します
環境:Windows10 pro
ステップ
1. JDKインストール
まずはJDKをダウンロードします。
Java SE - Downloads | Oracle Technology Network | Oracle 日本
投稿時点ではJava SE 11 (LTS)を選びました。基本的に(LTS)がついているものを選べばOK!!
※久々にJDKをダウンロードしましたが、いつの間にかアカウント登録が必要になっていました。。。
ダウンロード後、ZIPファイルを解凍。
2. Kotlinインストール
続いてKotlinをダウンロードします。
以下ページの下部に移動し、「kotlin-compiler-1.5.20.zip」をダウンロードします。
Release Kotlin 1.5.20 · JetBrains/kotlin · GitHub
投稿時点では1.5.20を選びました。基本的にKotlin releases | Kotlinのトップのバージョンを選べばOK!!
ダウンロード後、ZIPファイルを解凍。
3. 環境変数設定
回答したJDK、Kotlinのフォルダの「bin」フォルダまでのパスを環境変数の「Path」に設定します。
私の場合は以下を追加しました。
C:\Program Files\Java\jdk-11.0.11\bin C:\Program Files\Kotlin\bin
4. 動作確認
環境変数を設定後、コマンドプロンプトを起動し、「kotlin -version」を実行して以下のような表示がされればセットアップ完了です。
>kotlin -version Kotlin version 1.5.20-release-287 (JRE 11.0.11+9-LTS-194)
【Python】決定版!dict(辞書型)を値でsortするワンライナー
dictの値でソート(sort)してdictを返すワンライナーです。
(dictをソートしてlist型に変換して終了している記事が多いと感じました。)
昇順:
dict_data = {k:v for k,v in sorted(dict_data.items(), key=lambda x : x[1])}
降順:
dict_data = {k:v for k,v in sorted(dict_data.items(), key=lambda x : x[1], reverse=True)}
動かす
dict_data = { "A":10, "B":5, "C":20 } dict_data = {k:v for k,v in sorted(dict_data.items(), key=lambda x : x[1])} dict_data = { "B":5, "A":10, "C":20 }
以上。お役に立てれば幸いです。
【Docker】コンテナ間の通信はdocker-composeのnetworksを上手く使おう
概要
コンテナ間で通信するために、docker-composeのnetworksを使うことができます。
コードはこちら
テスト準備
docker-compose build docker-compose up -d
テスト用docker-compose
version: '3.2' services: test_service_one: image: ubuntu:latest container_name: test_service1 build: ./ networks: - test_network tty: true stdin_open: true privileged: true test_service_two: image: ubuntu:latest container_name: test_service2 build: ./ networks: - test_network tty: true stdin_open: true privileged: true networks: test_network:
テスト実行結果
pingを実行すると双方のコンテナ内から通知できていることが分かります。
user@wsl:~/develop/dockers/docker_network_sample$ docker exec -it test_service1 ping test_service2 -c 5 PING test_service2 (172.18.0.3) 56(84) bytes of data. 64 bytes from test_service2.docker_network_sample_test_network (172.18.0.3): icmp_seq=1 ttl=64 time=0.157 ms 64 bytes from test_service2.docker_network_sample_test_network (172.18.0.3): icmp_seq=2 ttl=64 time=0.046 ms 64 bytes from test_service2.docker_network_sample_test_network (172.18.0.3): icmp_seq=3 ttl=64 time=0.060 ms 64 bytes from test_service2.docker_network_sample_test_network (172.18.0.3): icmp_seq=4 ttl=64 time=0.097 ms 64 bytes from test_service2.docker_network_sample_test_network (172.18.0.3): icmp_seq=5 ttl=64 time=0.041 ms --- test_service2 ping statistics --- 5 packets transmitted, 5 received, 0% packet loss, time 4130ms rtt min/avg/max/mdev = 0.041/0.080/0.157/0.043 ms user@wsl:~/develop/dockers/docker_network_sample$ docker exec -it test_service2 ping test_service1 -c 5 PING test_service1 (172.18.0.2) 56(84) bytes of data. 64 bytes from test_service1.docker_network_sample_test_network (172.18.0.2): icmp_seq=1 ttl=64 time=0.286 ms 64 bytes from test_service1.docker_network_sample_test_network (172.18.0.2): icmp_seq=2 ttl=64 time=0.040 ms 64 bytes from test_service1.docker_network_sample_test_network (172.18.0.2): icmp_seq=3 ttl=64 time=0.042 ms 64 bytes from test_service1.docker_network_sample_test_network (172.18.0.2): icmp_seq=4 ttl=64 time=0.044 ms 64 bytes from test_service1.docker_network_sample_test_network (172.18.0.2): icmp_seq=5 ttl=64 time=0.082 ms --- test_service1 ping statistics --- 5 packets transmitted, 5 received, 0% packet loss, time 4152ms rtt min/avg/max/mdev = 0.040/0.098/0.286/0.094 ms
最後に
docker-composeのnetworksを使うことでコンテナ間の通信ができることが分かりますね。
【Docker】UbuntuのDockerを最新バージョンにアップデートする
環境
- Ubuntu 18.04LTS
アップデート前のDockerバージョン
Client: Docker Engine - Community Version: 19.03.13 API version: 1.40 Go version: go1.13.15 Git commit: 4484c46d9d Built: Wed Sep 16 17:02:36 2020 OS/Arch: linux/amd64 Experimental: false
アップデート方法
sudo apt-get update sudo apt-get install \ apt-transport-https \ ca-certificates \ curl \ gnupg \ lsb-release curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg echo \ "deb [arch=amd64 signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/ubuntu \ $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null sudo apt-get update sudo apt-get install -y docker-ce docker-ce-cli containerd.io
アップデート後のDockerバージョン
Client: Docker Engine - Community Version: 20.10.6 API version: 1.41 Go version: go1.13.15 Git commit: 370c289 Built: Fri Apr 9 22:46:01 2021 OS/Arch: linux/amd64 Context: default Experimental: true
pipを実行すると「Did not provide a command」になる場合
WindowsでPython環境を構築し、
ちゃんとPATHも通しているが
コマンドプロンプトでpipを実行すると
「Did not provide a command」
になる場合があります。
原因
恐らく、環境変数でPythonより上位に以下のパスがあるため、
PythonのpipよりもPerlのpipが優先されていることが原因です。
C:\strawberry\perl\bin\pip C:\strawberry\perl\bin\pip.bat
対処
perlを削除するか、Pythonのpipをperlよりも上位に設定すると解消されます。
ただ、perlのpipが使えなくなるため、注意が必要です。