サクサク読めて、アプリ限定の機能も多数!
トップへ戻る
参議院選挙2025
qiita.com/cvusk
Deleted articles cannot be recovered. Draft of this article would be also deleted. Are you sure you want to delete this article? LLM開発のためのデータエンジニアリング MLOps Advent Calendar 2023の24日目です。 Stability AIでデータ系のソフトウェアエンジニアをやっているcvuskです。主な仕事は日本語LLMのためのデータ開発です。Stability AIでは日本語LLMも各種開発しています。LLMの学習というと大量のGPUを用意して巨大なデータでモデルを学習する、というキラキラしたイメージ(?)が強いかもしれませんが、データが重要かつ苦労が耐えない課題であることは他の機械学習やディープラーニングモデルと違いありません。日本
Deleted articles cannot be recovered. Draft of this article would be also deleted. Are you sure you want to delete this article? 12月25日の2022MLOpsアドベントカレンダーです。 澁井と申します。機械学習界隈では機械学習を実用化するためのシステム開発の本を書いてたります。もし良かったら読んでみてください。 『機械学習システムデザインパターン』 『機械学習システム構築実践ガイド』 このブログの内容は2022年年忘れMLOps LT大会で話した内容になりますので、ご興味あればそちらもご参照ください。 疑問 2022年のAI界隈で最も話題となった技術革新の一つにGenerative AIがあります。Generative AIは文字通りAIによって画像やテキスト
12月10日の2022ソフトウェアテストアドベントカレンダーです。 Launchable社でエンジニアとして働いているcvuskと申します。機械学習界隈では機械学習を実用化するためのシステム開発の本を書いてたります。もし良かったら読んでみてください。 『機械学習システムデザインパターン』 『機械学習システム構築実践ガイド』 本ブログでは機械学習を用いてテスト実行を効率化する手法として、Predictive Test Selectionについて説明します。テスト実行時間やコストで課題を抱えているエンジニアに役に立つと幸いです。 昨今の開発におけるテスト事情 2002年に『テスト駆動開発』が世に出て、ソフトウェア開発でテストを書くことが常識になって早20年が経っています。その間にクラウドの登場やDevOpsの普及により、テストをCI/CDパイプラインで自動実行し、コードとプロダクト品質を維持す
Pythonにはclickというコマンドラインパーサとして使えるライブラリがあります。同様のライブラリとして以前からargparseがありますが、clickはargparseよりももっと簡単に使えるライブラリです。 clickでコマンドラインパーサを書く例は以下になります。 # main.py import click @click.command() @click.option( "--count", type=int, default=1, required=True, help="Number of greetings.", ) @click.option( "--name", type=str, default="Your name", required=True, help="The person to greet.", ) def hello( count: int, name
PythonでターミナルをRichにする ターミナルは暗い。Pythonでバックエンド開発をしていると日々真っ暗な画面を凝視することになり、性格も人生も暗くなります。 そこに光明を差すライブラリを見つけました。Richです。Richを使うことによって、真っ暗なターミナルを色とりどりのフォントと絵文字で明るい人生を送ることができるようになります。 What is Rich? Richはターミナルにリッチなテキストを美しく整形して出力するPythonライブラリです。 Pythonの標準出力、ログの両方をきれいに表示することができるようになります。しかも絵文字も使えます。 Richは以下で公開されています。 Github Documentation Richになりましょう! Rich入門 インストールは簡単です。すぐRichになれます。
Kubernetes CRDまわりを整理する。 KubernetesにはCustom Resource Definitions(CRD)という機能があります。CRDはKubernetes APIを拡張して独自のリソースを定義するものです。KubernetesのリソースとはDeploymentやPodのようなもののことですが、CRDではDeploymentやPodと並ぶリソースを自分で定義し実装することが可能となっています。 本記事ではCRDについて、概念やツールを整理します(2018/12/24時点の情報をもとに)。 リソースとオブジェクト CRDに入る前にKubernetesのリソースとオブジェクトについて整理します。 リソース リソースとは何らかのオブジェクトを概念です。例えばDeploymentやPodsがリソースです。リソースはKubernetes APIを持ち、実際に配備されてい
Neural Architecture Searchの新潮流 〜DARTSとFBNetの衝撃〜 AutoMLの理論、Neural Architecture Searchを説明する。でNeural Architecture Search(略称NAS)について説明したのですが、世の中の移り変わりは早いもので、また違う方法でニューラルネットワーク最適化する手法が提案されています。今回はそのうちの2つ、DARTSとFBNetについて説明します。 DARTS: Differentiable Architecture Search FBNet: Hardware-Aware Efficient ConvNet Design via Differentiable Neural Architecture Search 前置き NASはニューラルネットワークの構造を最適化することを目的とする手法です。 これ
ディープラーニングでMixture of Experts Mixture of Expertsは複数のニューラルネットワークを組み合わせる手法のひとつで、階層型ネットワーク構造をとります。 Mixture of Expertsはゲート・ネットワークとエキスパート・ネットワークで構成され、ゲート・ネットワークがエキスパート・ネットワークの重要性を示し、エキスパート・ネットワークが判定をします。 具体的なダイアグラムは以下のようになっています。 ゲート・ネットワーク、エキスパート・ネットワークはいずれも同じ入力データを取ります。 エキスパート・ネットワークは入力データに対してターゲット変数を推論します。 (画像分類であれば、猫画像が入力されたら猫を推論する) ゲート・ネットワークは入力データに対して、どのエキスパート・ネットワークが正しい推論をしそうか、エキスパート・ネットワークを取捨選択する
Deleted articles cannot be recovered. Draft of this article would be also deleted. Are you sure you want to delete this article?
Deleted articles cannot be recovered. Draft of this article would be also deleted. Are you sure you want to delete this article? 誤ったラベルから学習する弱教師あり学習 教師あり学習で分類モデルを作るとき、通常の教師データに使うのは「正しく」ラベリングされたデータです。 教師あり学習では正しい教師データをもとにして、入力データを正しく分類できるモデルを生成します。 しかし、正しくラベリングされたデータをいつでも入手できるとは限りません。 たとえば新しく画像分類モデルを作ろうとする場合、まずは分類対象の教師データを収集し、それらに人手でラベリングをする必要があり、工数と費用がかかります。 さらにはラベルの種類が多くなると、そのラベリングの所要時間は増大します。 正し
ディープラーニングで音声分類 勉強がてらディープラーニングで環境音・自然音の分類をやってみました。 データセットはESC-50を使用します。 コード全文。 やったこと 環境音・自然音をConvolutional neural networkで分類します。 対象は動物の鳴き声や雨の音、人間の咳、時計のアラーム、エンジン音のような声(言葉)のない音です。 これらの音を使って、以下の手順で分類器をつくりました。 音声データの前処理 2. データの入手 3. Augmentation 4. メルスペクトログラム 5. データの用意 CNNで分類 CNNの定義 最適化関数にAmsgradを採用 学習データにmixupを採用 音声データの前処理 ESC-50は環境音を50クラス、2,000ファイル集めたデータセットです。 クラスには以下があります。 50クラスで各クラスのデータが40ファイルずつ用意さ
$ h_j $はjレイヤーのAnchor pointにおける隠れ状態。 $ W_{prev},,,W_{curr},,,v $は重み(学習パラメータ)。 この式はレイヤーj(0~i-1)がレイヤーiの入力となる確率を計算しています。 Skip connectionでiレイヤーに複数レイヤーの入力がある場合、入力レイヤーは深さ方向に結合します。この時、入力レイヤー間で結合できないとき(サイズが違うとき)は、小さいほうの入力サイズをゼロパディングして調整します。 Skip connectionはAttentionをもとにしていますが、Attentionについては以下論文が参考になります。 Neural Machine Translation by Jointly Learning to Align and Translate Neural Programmer: Inducing Latent
OSはCentOS7.4を使います。 Rancher, Kubernetes, Helm, Docker, Jenkins Rancher, Kubernetes, Helm, Docker, Jenkinsについては以下をご参考ください。 Rancher: https://rancher.com/ http://rancher.com/docs/rancher/v1.5/en/ Kubernetes: https://kubernetes.io/ https://qiita.com/mihirat/items/ebb0833d50c882398b0f https://qiita.com/MahoTakara/items/85096f8b2632c802ab22 Helm: https://github.com/kubernetes/helm https://github.com/kube
Deleted articles cannot be recovered. Draft of this article would be also deleted. Are you sure you want to delete this article? 弱教師あり学習は何を見ているのか? 機械学習で分類モデルを学習する際、通常であれば正しくラベリングされたデータを入力としますが、弱教師あり学習では誤ったラベルから学習します。 たとえば「飛行機」、「腕時計」、「ヒョウ」を分類するモデルを学習するとき、すべての「飛行機」画像に「腕時計」、「ヒョウ」のいずれかのラベルがついている(=誤ってラベリングされている)とします。 この場合、「腕時計」画像、「ヒョウ」画像の特徴を持たない画像を「飛行機」画像と学習します。この学習を実装するには損失関数を工夫します。具体的には、学習で誤りラベルを推論する
KubernetesからGPUを使ってTensorflowを動かす Kubernetes 1.8ではα版(実験的)機能としてPodからGPUを使うことが可能になっています。 KubernetesからGPUを使うメリットは、ディープラーニングとコンテナ・オーケストレーションを組み合わせられることです。 ディープラーニングのトレーニングフェーズではGPUを使うことでスピードアップするのが一般的です。 NvidiaもDockerからGPUとCUDAを使うためのNvidia Dockerを提供しており、コンテナ上でGPUを使うのは有効な手段として広まっていっていると感じます。 KubernetesでもGPU使用が要望されており、現在はα版として使用可能になっています。 KubernetesからGPUを使う方法 詳しくは以下で書かれていますが、ホストサーバにインストールしたNvidia CUDAやC
Deleted articles cannot be recovered. Draft of this article would be also deleted. Are you sure you want to delete this article? Kubernetesのエコシステムをまとめる(2018年5月時点) 日本のGW中(2018年)にデンマークではKubeConを開催しているようでして、現地で参加している方々は羨ましい限りです。 KubeConの情報が日本に届くのはGW明けだと思いますが、その前に昨今のKubernetesのエコシステムとかいろいろなことをまとめます。 <追記2018/05/13> KubeCon 2018 EUで公表された情報も追加しました。 <追記2018/06/08> チュートリアル、トレーニングを追加しました。 <追記2018/06/11> プレイ
データが足りないなら増やせば良いじゃない。 パンがなければケーキを食べれば良いじゃない。 データ不足や不均衡なときにデータを増殖する手法をざっと調べたのでまとめます。 TLDR テーブルデータ(構造化データ)はSMOTEが便利 画像データは画像処理(左右反転、傾ける、ノイズ追加等々) テキストデータは異音同義語や類語、ルールベースで単語置換 音声データは数値配列にしてノイズを乗せたり伸ばしたり 前置き 機械学習やディープラーニングで学習するとき、充分なデータが用意されているとは限りません。 またはデータの総量は充分にあるけど、偏っている(インバランスになっている)ということも稀ではありません。 そういう場合の対策は概ね2つあると思います。 データを集めてくる データを増やす 1.のデータを集める場合は、Webを探索してからオープンデータを集めたり社内調整したり、いろいろがんばります。 We
お天気データで異常検知 勉強がてら、気象庁が公開している気象データで異常検知をしてみました(異常気象とは言っていない)。 コード全文は以下です。 https://github.com/shibuiwilliam/weather_outlier 動機 自己学習のため & 2/14にやってた異常検知ナイトが面白かったためです。 使ったデータ 以下で取得した気象庁が公開している気象データを使いました。 Japan Meteorogical Agency 東京地方を選択し、日別で30年分を取得しています。 詳しくは以下です。 地域:東京>東京 期間:1987/01/01-2017/12/31 単位:日別 項目:平均気温、最高気温、最低気温、雨量、日照時間、最深積雪、平均風速、最高風速、最高風速の向き 気象庁が公開している項目は上記よりも多種多様にあります。 上記を選んだのは、1度のダウンロードで1
コンテナで機械学習を動かすKubeflow KubernetesでオーケストレートされたDockerコンテナでTensorflowを動かすKubeflowというツールがGithubに上がっていました。 https://github.com/google/kubeflow ためしに動かしてみました。 Kubeflowとは KubeflowはKubernetesで機械学習を動かすためのスケーラブルでポータブルな環境を提供します。 目的は"to provide a straightforward way for spinning up best of breed OSS solutions"とのことですので、OSSで機械学習基盤を実現するシンプルな構成を提供するというものだと思います。 Kubeflowには以下が含まれています。 JupyterHub Tensorflow Training Co
Kerasのモデルは学習完了時のものが最良とは限らない ちょっとしたTipsです。 Kerasの限らず、ディープラーニングで作ったモデルは学習完了時のものが最良とは限りません。 学習を進めていって全エポックを終了したとしても(またはEarlyStoppingしても)、過学習であったり局所最適化されてしまったりということがありえます。 学習の途中に最良のモデルが存在するけど、学習完了時はそれより劣る、ということです。 そうした場合はCheckpointで保存された最良のモデルをロードし直すのが良いと思います。 import keras from keras.datasets import mnist from keras.models import Sequential from keras.layers import Dense, Dropout from keras.optimizers
Jupyter-tensorboardの紹介とKerasから使ってみる Jupyter Notebookに統合されたTensorboardの紹介です。 https://github.com/lspvic/jupyter_tensorboard ディープラーニングのモデル開発をする際、ひろく使われる開発インターフェイスがJupyter Notebookです。 加えてディープラーニングのフレームワークとして頻繁に使われる2強がTensorflowとKerasだと思います。 Keras自体がTheanoやTensorflowをカバーするハイレベル・ライブラリのため、実質Tensorflowが使われているのですが、TensorflowにはTensorboardという便利なウェブアプリケーションがあります。 Jupyter-tensorboardはJupyter上でTensorboardを起動するこ
第4のラベルは画像のRGB値の平均値を算出し、分類します。 RGB平均値が128より小さい:ラベル0(暗い画像) RGB平均値が128以上:ラベル1(明るい画像) 飛行機には初期ラベルとして0、第2のラベルとして1、第3のラベルとして2がつきます。飛行機は飛行機で、人工物で、飛ぶものという分類です。 また、その画像が暗ければ第4のラベルとして0、明るければ第4のラベルとして1を付与します。 (第2、第3、第4のラベル付けはプログラミングしやすかったために作った恣意的なものです。 人間の手でがんばればもっと色々なラベルを付けられるでしょうが、私には画像60,000枚のラベル付けをする根性がありませんでした) データのロードとラベル付けのプログラムは以下のとおりです。 # load dataset (x_train, y_train), (x_test, y_test) = cifar10.l
ディープラーニングで落書きを消す 先日畳み込みオートエンコーダでノイズ除去を行いましたが、そのときの課題は再現された画像が滲んでしまっていたことです。 今回はもう少し改良して、オートエンコーダやCNNで落書きを消してみようと思います。 ライブラリにはKerasを使います。 データセットはCifar10を使います。 Cifar10にランダムに棒線で落書きします。 棒線の色は黒バージョンとランダム色バージョンを作りました。 黒バージョン ランダム色バージョン この棒線を消して元画像を再現するよう、ディープラーニングで学習します。 トレーニングデータ50,000点の落書き除去を学習し、テストデータ10,000点の落書き除去&元画像再現性を評価します。 再現性の評価関数はmean squared errorを使います。 落書きを消す手法として、オートエンコーダとCNNを試しました。 試した手法:
Kerasでハイパーパラメータの自動調整いろいろ ディープラーニングを使う際の大きな課題の一つがハイパーパラメータのチューニングです。 ニューラルネットワークのニューロン数やドロップ率、ラーニング率といったパラメータを調整し、より良いモデルを作る必要があります。 どのパラメータ値が良いのかは先例や経験から決めることができますが、始めてのモデルを使う場合は、やはりパラメータのチューニングをしなければなりません。 ハイパーパラメータ・チューニングの方法は手動調整と自動調整があります。 手動でパラメータを試していくよりも、やはり自動調整でパラメータを探索していくほうが便利です。 パラメータ自動調整の方法 ニューラルネットワークに限りませんが、機械学習のパラメータ調整を行う方法は多種多様にあります。以下に例を挙げます。 ランダム・サーチ RandomizedSearchCV: ランダムにパラメータ
目的 Python3.5、Anaconda4.3環境を使用しています。 Kerasで作ったLSTMモデルをJupyter Notebook上でpydot + Graphvizで可視化する際の手順です。 OSはCentOS7.3です。 ここにKerasのモデルを可視化する方法が書いてあるのですが、必要なパッケージ含めて解説します。 https://keras.io/visualization/ 手順 yumでOSにgraphvizをインストール。 pipでpydot、graphvizをインストール。 Jupyter Notebookでモデルを可視化してみる。 yumでOSにgraphvizをインストール Graphviz自体はPythonと関係ないパッケージです。 http://www.graphviz.org/About.php CentOSに限らず、OSで動作するものなので、まずはインス
簡単な機械学習とWebアプリ Webサイトからの入力に対して、機械学習で作った判定モデルで結果を画面に表示する簡単なデモアプリを作ってみました。 アヤメのがく片と花びらの大きさ(縦、横)を入力すると、品種を判定して表示します。 コードはこちらにあります。 https://github.com/shibuiwilliam/mlweb 全体像 こんな感じです。 がく片や花びらを入力するフロントエンドと判定して結果を返すバックエンドという構成です。 スーパーシンプルです。 言語はPython3.6で、Webにはflaskとwtform、機械学習にはscikit-learnを使っています。 使い方 開発環境はCentOS7.3とPython3.6です。 ライブラリとしてflask、wtform、scikit-learn、Jupyter Notebookを入れています。 この辺は概ねAnaconda
KerasとKubernetesによるディープラーニングの並列学習 KerasがCNTKに対応したことは以前書きました。 CentOSからKeras with CNTK backendを動かす これでKerasはTheano、TensorFlow、CNTKをバックエンドにして、同じプログラムで違うフレームワークを使うことができるようになりました。 Kerasのバックエンドが増える利点は、環境変数を変更するだけでフレームワークを入れ換えて学習することができる点だと思います。 フレームワークを変えても、プログラムが同じであればニューラルネットワークのモデル自体は(たぶん)変わりませんが、精度やスピードが多少変わったりします。 または、各フレームワークで学習したモデルをアンサンブルして推論するということも可能です。 複数フレームワークのアンサンブルを思いついたので、実際にやってみました。 プログ
Deleted articles cannot be recovered. Draft of this article would be also deleted. Are you sure you want to delete this article? 『GPUを支える技術』とディープラーニング 2017/07/26 水曜日にPyData Tokyo Meetup #14に参加してきました。 内容はNVIDIAの方によるディープラーニングでして、ディープラーニング用NVIDIA GPUの選び方やNVIDIAのディープラーニング界隈への貢献をきくことができました。 ちょうど先週から「GPUを支える技術」を読んでいたので、GPUについて学んだことをまとめたいと思います。 個人的なGPUの思い出 始めてGPUを使ったのは10年くらい前の大学時代にPCを組み立てたときです。CPUはAMD、GP
Deleted articles cannot be recovered. Draft of this article would be also deleted. Are you sure you want to delete this article? DQNで自作迷路を解く Deep Q Network(いわゆるDQN)で自作の迷路を解いてみました。 プログラムはこちらにあります。 https://github.com/shibuiwilliam/maze_solver 概要 DQNは強化学習の一種で、最適な戦略選択にニューラルネットワークを使っているものになります。 強化学習やニューラルネットワークの説明は以下が参考になります。 強化学習 ゼロからDeepまで学ぶ強化学習 - Qiita ニューラルネットワーク TensorFlowのチュートリアルを通して、人工知能の原理について学
次のページ
このページを最初にブックマークしてみませんか?
『@cvuskのマイページ - Qiita』の新着エントリーを見る
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く