
はてなキーワード:tensorflowとは
DeepLearningモデル変換ツール全部盛り巨大Docker環境の構築
Introduction
めんどくさい。この世のすべての環境構築がめんどくさい。依存関係破壊祭りでツラい。したがって、Github Actions 上でモデル変換にまつわる環境を全部取り込んでdocker build して超巨大全部盛りDLモデル変換環境を構築した。足りない周辺のツールは各自追加インストール。GUI や iGPU/dGPU やホストへ接続されたUSB機器 へコンテナ内からアクセスできるため実行環境としてもそのまま使える。ただし、とにかくImageがデカイ &セキュリティガバガバ。GitHub Actions のコンテナビルドの容量制限に引っかかることを回避するためのトリックを仕込んである。
2. Environment
Python 3.6+
TensorFlowv2.6.0+
PyTorch v1.10.0+
TorchVision
TorchAudio
OpenVINO 2021.4.582+
TensorRT 8.2+
pycuda 2021.1
coremltools
onnx
onnxruntime
onnx_graphsurgeon
onnx-simplifier
onnxconverter-common
onnx-tensorrt
onnx2json
json2onnx
tf2onnx
torch2trt
onnx-tf
tensorflow-datasets
tf_slim
edgetpu_compiler
tflite2tensorflow
openvino2tensorflow
gdown
pandas
matplotlib
https://www.imdb.com/de/list/ls599665763/
https://www.imdb.com/de/list/ls599665763/copy/
ONNX -> TFLite,TensorFlow, Keras, TFJS, CoreML 変換
実装している機能が多すぎるので、この記事に表現していない変換オプションはREADMEを参照。TransformerやSTTやTTSやその他もろもろの一発変換に対応したつもり。onnx-tensorflow より推論効率が高いモデルを生成できる。また、onnx-tensorflowよりも対応しているオペレーションの種類が多い。
コントリビューター
コード量(code = 行)
cloc .
419text files.
414 unique files.
174 files ignored.
----------------------------------------
Language files blank comment code
----------------------------------------
YAML 7 42 79 586
Dockerfile 1 6 3 38
----------------------------------------
SUM: 340 5320 6719 42974
----------------------------------------
onnx==1.13.1
simple_onnx_processing_tools
tensorflow==2.13.0rc0
ghcr.io/pinto0309/onnx2tf:latest
pip
pip installonnx2tf -U
wgethttps://github.com/PINTO0309/onnx2tf/releases/download/0.0.2/resnet18-v1-7.onnx
2-2. 基本の「き」
TFLite を出力。
2-3. 基本の「ほ」
TFLite変換 + 完全体の saved_model を出力。
onnx2tf -i resnet18-v1-7.onnx -osd
2-4. 基本の「ん」
onnx2tf -i resnet18-v1-7.onnx -cotof
2-5. Keras
.h5 はイロイロと問題があるので、現状最新のフォーマット keras_v3フォーマットで出力。
onnx2tf -i resnet18-v1-7.onnx -okv3
.h5 を生成するとき。
https://www.imdb.com/es/list/ls599679681/
https://www.imdb.com/es/list/ls599679681/copy/
onnx2tf -i resnet18-v1-7.onnx -oh5
# Custom flatcbinary forUbuntu20.04+
#https://github.com/PINTO0309/onnx2tf/issues/196
wgethttps://github.com/PINTO0309/onnx2tf/releases/download/1.7.3/flatc.tar.gz \
&&tar -zxvf flatc.tar.gz \
&&sudo chmod +x flatc \
&&sudomv flatc /usr/bin/
# Custom flatcbinary forWindows
#Set the environment variable paths appropriatelyon your own.
#https://github.com/PINTO0309/onnx2tf/issues/196
https://github.com/PINTO0309/onnx2tf/releases/download/1.7.3/flatc.exe
onnx2tf -i resnet18-v1-7.onnx -coion
https://www.imdb.com/es/list/ls599679368/
test.py
#! /usr/bin/envpython
import torch
import torchvision
weights = torchvision.models.MobileNet_V3_Large_Weights.DEFAULT
model = torchvision.models.mobilenet_v3_large(weights=weights)
model.eval()
onnx_file = f'mobilenetv3_large_pytorch.onnx'
SIZE = 128
x = torch.randn((1, 3, SIZE, SIZE))
torch.onnx.export(
args=(x),
f=onnx_file,
opset_version=11,
input_names=[
'input',
],
output_names=[
'output',
],
)
import onnx2tf
onnx2tf.convert(
input_onnx_file_path=onnx_file,
output_folder_path='saved_model',
copy_onnx_input_output_names_to_tflite=True,
)
importtime
importtensorflowas tf
interpreter = tf.lite.Interpreter(
model_path="saved_model/mobilenetv3_large_pytorch_float32.tflite"
)
tf_lite_model =interpreter.get_signature_runner()
time_total = 0.0
kaisu =10
for i in range(kaisu):
inputs = {
'input':np.random.randn(1,SIZE,SIZE,3).astype(np.float32),
}
tf_lite_output = tf_lite_model(**inputs)
elapsed_time =time.time() - start_time
print("[TFLite]Model Predictions.shape:", tf_lite_output['output'].shape)
print("[TFLite]AVG elapsedtime:",time_total / kaisu)
https://github.com/aankhon-ki-gustaakhiyan-firmytt-hqq
TorchVision (MobileNetV3 Large) -> ONNX -> TFLite (シグネチ
TorchVision
ONNX
&&sudoapt-get install -y flatbuffers-compiler
https://github.com/saiyaara-firmytt-hqq
pip install -U onnx==1.14.0 \
&&python -m pip install onnx_graphsurgeon \
--index-urlhttps://pypi.ngc.nvidia.com \
&& pip install -U onnx-graphsurgeon \
&& pip install -U onnxruntime==1.15.1 \
&& pip install -U onnxsim==0.4.33 \
&& pip install -U simple_onnx_processing_tools \
&& pip install -U onnx2tf \
&& pip install -U h5py==3.7.0 \
&& pip install -U psutil==5.9.5 \
&& pip install -Utensorflow==2.13.0 \
&& pip install torch torchvision torchaudio \
--index-urlhttps://download.pytorch.org/whl/cpu
Geminiさんに聞いてみた。冗長ー!
Geminiです。クラウドではなくローカルでLLMを遊びたいとのこと、素晴らしいですね!ローカル環境でLLMを動かすには、高性能なPCが必要になります。
残念ながら、特定の「LLM専用」と銘打ったブランドのPCを販売しているショップは、まだ一般的ではありません。しかし、LLMを動かすために必要なスペックを持ったPCは、多くのPCメーカーやショップで購入可能です。
LLMをスムーズに動かすためには、以下のスペックが求められます。
もし、ある程度の知識と時間があれば、自作PCに挑戦してみるのもおすすめです。自作PCであれば、自分の好きなパーツを選んで、自分だけのオリジナルPCを組み立てることができます。
ローカルでLLMを動かすためのPC選びは、予算や用途に合わせて慎重に行う必要があります。まずは、自分がどのような用途でLLMを使いたいのかを明確にし、それに合ったスペックのPCを選びましょう。
GPUクラウドサービス:ローカル環境を用意するのが難しい場合は、GPUクラウドサービスを利用するのも一つの手です。
LLMのフレームワーク:TensorFlowやPyTorchなどの深層学習フレームワークを使いこなせる必要があります。
LLMの世界は日々進化しています。ぜひ、自分に合った環境でLLMを楽しんでください。
何か他に聞きたいことがあれば、お気軽にご質問ください。
Keras: The high-levelAPI forTensorFlow
https://www.tensorflow.org/guide/keras
対戦有り難うございました。
はい、Kaggleのようなブラックボックスのリーダーボードで評価する現場は存在します。
機械学習モデルの評価には、一般的に以下の2つの方法があります。
1. **ホールドアウト評価**:学習データを訓練データとテストデータに分割し、テストデータでモデルを評価する方法。[1]
2. **ブラックボックス評価**:評価用のデータセットが公開されず、サーバーにモデルを提出して評価される方法。Kaggleのコンペティションがこの方式。[1][2]
つまり、Kaggleのようなブラックボックス評価は、機械学習の様々な現場で採用されている評価方式の1つであり、特に実運用に近い評価が求められる場合に有効な手段となっています。[1][2][3]
Citations:
[1]https://qiita.com/Shun_PI/items/896d05ed9689f4b24347
[2]https://www.kikagaku.co.jp/kikagaku-blog/kaggle-competition/
[3]https://www.kikagaku.co.jp/kikagaku-blog/signate-competition/
[4]https://www.topgate.co.jp/blog/google-service/8707
[5]https://www.jst.go.jp/crds/pdf/2023/RR/CRDS-FY2023-RR-02.pdf
最近は最前線から離れててあんまり追えてないけど、現役のときの2008年くらいから10年くらいの間で、仕事のやり方や設計の考え方が大きく変わったIT技術要素で、いまぱっと思い浮かぶのはこんな感じかな。
分野にもよるし、調査して試作した結果自分の業務には採用しなかった技術とかもある。流行ると思って使えるようになったけど流行らなかった技術を入れるとたぶんもっとある。
あと、新機種が出てOSが新しくなったり、ミドルウェアの新バージョン対応、テスト手法の進化もけっこうカロリー高いけどここには書いてない。
「自分はフロントエンド専門でReactしかやらない」みたいに分野を絞れば大分減るけど、その技術が何年持つかわからないから普通はリスクヘッジのために他の技術も齧らざるを得ないし、バックエンドとかの人と議論するのに結局他分野の知識もそれなりに必要。
NoSQL(memcached,Redis,Cassandra)
クラウドアーキテクチャ、XaaS(AWS,Google Cloud, MicrosoftAzure)
CI/CD(TravisCI,CircleCI,Jenkins)
トランスパイラ(Browserify, webpack,CoffeeScript,TypeScript)
型システム(Rust,TypeScript,Haskell)
オーケストレーション(Ansible,Kubernetes, Terraform)
SPA(React, AngularJS, Ember.js,Vue.js)
3Dゲームエンジン(Unreal Engine無償化、Unity5)の他分野への普及
GraphQL
機械学習ライブラリ(Tensorflow, PyTorch,Chainer)
Jupyter Notebook
NFT
GPT4:
AI技術やその他の技術が急速に発展している現代では、確かに最先端の技術にアクセスできないと置いていかれる感覚があります。しかし、経済的な理由で最先端技術を利用できない方々も、それに代わるリソースや方法を活用することが可能です。
AIやその他の分野での学習や研究に役立つ無料または低コストのリソースがたくさんあります。以下にいくつかの例を挙げます。
経済的な制約がある場合でも、これらの無料または低コストのリソースを活用して、AIの分野で学び、成長することができます。最先端技術に追いつくためには、情報へのアクセスだけでなく、自分自身の学習意欲や努力も重要です。
やりたいことがありPythonを勉強しているけど、マジで躓きが多い。
いや文法とかは調べりゃわかるじゃん。そういうのはJupyterで書いて学習はできるのよ。
そうじゃなくて、やりたいことを実現するための環境構築ができない。
独自ライブラリのinstallがうまくいかん、importがうまくいかん。
Visualなんちゃらツールが足りないだとか、TensorFlowが必要とか仮想環境を立てるだとか、、
こんな初歩的なこと!って思うかもしれんけど、もうこれで一週間(夜の時間な)とか浪費してるわけ。
こんなんじゃ、やりたいことの実現に何か月もかかってしまいそうだ。
なんかこういう環境構築って「1本道感」がないんだよな。
本業がSIerなんだけど、正直自分自身が技術力のない人って認識はあるし、今回それがモロで裏目に出ている。
システムの構築をお願いする立場として、よくインフラ周りの人とかリリース担当の人とかから「環境(構築)の手順が・・」とか始まってたのを思い出す。
当時は「ベンダーに聞いて解決しなさいよ」とか思ってたけど、今自分の躓いてる状況を踏まえると、それだけじゃ到底解決しなさそうなことも多いんだよな。
特にいまの自分は、躓いた時の手数が少ないし、どうすりゃいいかわからんことが多すぎる。
質問サイトとかは使ってるけど、みんなどこかのコミュニティに所属したり、ちゃんとオンラインスクールとかで一本道的な環境構築法を学んだりしてるのだろうか。
結局まともに扱おうとするとtype hint書くことになるし、マジで動的である利点が無い
動的型付けの言語にも利点はあるという主張は(自分は同意しかねるけど)理解しているが、今のPythonの用途で動的であるメリットが皆無
機械学習やっててPyTorchとかTensorFlowとか既存のライブラリがPythonだから仕方なくPython触ってるけどマジでさっさと淘汰されてほしい
それかJavaScriptにおけるTypeScriptみたいなのがPythonにもほしい
なんか今頃になってPythonの学習コンテンツが充実してきてるけど
Pythonってもう旬を過ぎたと思うんだよな
tensorflowとかsklearnとか使うためにPythonは凄く有用だったしこぞって使ってた
まぁそれでもPandasはクソだったけど他に選択肢もなかった
あと、AIみたいにサービス化とかUIを気にしなくて良いようなワンショットのプログラミングには向いてた
型付けとかしなくていいし、少しぐらいメモリリークしてても気にしないし、UIはtensorboardとかグラフをpngで吐き出せば良かった
何よりターミナルから打ち込んだら実行してくれたりMarkdownのファイルの中に書いたら実行してくれたりそれはまぁ便利だった
ところがAIがコモディティ化して頭打ちも見え始めてきた段階でそろそろビジネス化しないといけないけど
そうなるとPythonみたいなやんちゃな言語をプロダクトレベルまで実装出来る人が少ないことに気づき始めた
UI作るの面倒だし、型チェックとかもやってくれないから想定してないバグが出たり
Pythonを凄いやってた人も「プロダクトレベルとなるとちょっと」っていう人が増えてきた
かといってJavaには戻りたくないってなってTypeScriptが流行り始めた
そもそも最終のUIはWebだし、jQueryから始まったReact/Vue/Angularあたりはどれを使っても簡単にUIを作れる
おまけに枯れたNode.jsでサーバレスに実行できる環境まであるからTypeScriptが流行りまくってるんだと思う
Web系の弱いところはスマホアプリで、WPAあるけどイマイチ流行ってないしAppleが乗り気じゃ無いのがなんとも
なのでflutterあたりが人気出てくるかなぁ、とは思うけどWeb系ほど選択肢が無いから合わない時にとことん合わないと思う
ここから数年はPython人気が落ちてきて、TypeScriptが伸びて、Dartがじわじわ伸びてくるんじゃないかなぁ
初学者はPython、とか言うけど関係なくTypeScriptやった方がいいと思う
(年収270万で)プログラマーを引退して、医学部にきた俺が真面目に考えてやろう。
真面目に読んでいて、ちょっと気になる箇所がある。たとえばPostgreSQL を postgre とか書くヤツは現場では嫌われるぞ。少なくとも postgres と書いてくれ。お里が知れるぞ。
消えていくエンジニアの特徴だけど、叱責されたり馬鹿にされるのが嫌でVCS にコミットしないヤツ、または貪欲にコードレビューをされるのが嫌がるやつは、成長しない。
この業界は数年前には『デジタル土方』と揶揄される業界でした。ちなみに、アメリカでも「テック系はハードだから避ける」という雰囲気でした。つまり何をいいたいのかというと、ソフトウェアの開発者っていうのは「泥臭い領域」なんだよ。エリートとは程遠い場所にあるというね。
いやぁ、是非とも楽天で働くべきだよ。どうせ野村総合研究所とかNTT DATA なんて無理だと思うから。
うん、ココはまずい。基本的にフロントエンドなんて給料が安いのよ。だって、誰にやらせてもデータベースにクソなDCLを飛ばせないから。逆に、データベースを触れることができるプログラマーはリスクと責任が大きいから、給料が高いのだよ。B4 になってもそれが理解できていないようだと、この先くらいよ。
君はソフトウェア・エンジニアになりたいのだろ?世の中は分業で成り立っているのだから、全部やろうとするやつはアホだよ。
インターン生はお客さんなの。君のスキルが通用したのはすごいと思うけど、同じ感覚で仕事はできないから注意しときなよ。
なに言ってるの?そんなことは言い訳にならんよ。プログラマーになりたいのだろ?勉強をしろよ。
逆にいうと、あなたがインターンとして週3で20万円貰えていたのは、参入障壁が少ないからでしょ?強強エンジニアが生き残っているのは、それだけすごいということだよ。
いやぁ、違うと思うよ。その問題が「難しい」なら切り分けて、上に「ココが自分の能力では解決できないです」と持っていくだけなんだからさ。CS じゃないのだったら、仕事をするまで「扱わないまま」なんだよ?しかも、土日に勉強する気もないとなったらいつするのさ?
諦めなよ。ソフトウェアというものが「変化できることに価値がある」ものだから。変化する業界はストレスフルだけど、立身出世する可能性が高いでしょ?安寧なばしょではないの。
いやー、CSでない博士課程に行って、雇ってくれる企業があるかね?無いと思うけどな。
この時点で、君はコピペしかやってきてないことが理解できる。おそらく QUIC か MQTT あたりだろ?逆にいえば、それが実装できたら他社と差のつけられるプロダクトだったはずだ。つまり会社の利益の源泉であった部分をみすみす実装できないようでは、そこらへんの専門卒以下だぞ。
ムカつくというか、虫酸が走る書き方だ。箇条書きにすると、
プログラミングに年齢はないから。自分は9歳ではじめたけどね。
あー、俺も天才が高校のときにいて、マーチの情報工学と旧帝の院の学費を会社持ちという驚異的なやつがいたよ。今もブログ見てると、Android とiPhone のアプリを書いているみたいで、元気そう。
それを上手にコントロールできるプログラマは世界中にもほとんどいねぇ。むしろ、月20万でやるもんならギルドから苦情が来るぞ。オレもアビームの人に給料を答えたら、「こんなヤクザな会社はやめろ」と耳うちされたよ。
人より良い経験をしたいという願望はあるのは素晴らしいと思うよ。しかしながら、君が到達したノウハウは他人にもできることだからね。ワン・オブ・ゼムになりたくないなら、努力し続けることだな。勉強をするのをやめたら、数年で中卒に負ける世界だからな。覚悟しとけよ。
P.S.医学部に来たのは家庭の都合だよ。それに、自己顕示しないと「場末のコーダー」で読んでもくれないだろ?年収については、自分も低いと思うよ。なぜ低かったかというと、都内私立大学多浪中退の自分にはベンチャーの皮を被った助成金搾取がメインの反社会的勢力のフロント(ベンチャー)企業ぐらいしか相手にしてくれなかったからだよ。そこの会社は外国帰りのMDMA をキメて、未成年の子女に手を出しては警察沙汰スレスレのことをしているキチガイが社長をやっていて、人工知能を作ろうと学生インターンを酷使している会社だったのだけど、「サイバーエージェントに紹介する」という嘘にひっかかって、特定派遣事業の免許がないのに客先常駐させられ、土曜は帰社日、日曜は社長のPython の勉強会に参加させられる、というブラック会社にいてピンはね率(60%)となると、まともに考えることもできず働くアリになってしまってたからだよ。
P.S. ②年収については、初日から派遣先の会社に引き抜きのオファーをもらって、2ヶ月後に新しい会社に移動したけど、300万だったのでCodeIQ というサイトで転職をする準備をしていたよ。たしか、DMM とかサイバーエージェントの面接にいこうとしてたような記憶。その後で家庭の都合で、医学部に来たけど。
P.S. ③医学部医学科の6年生だよー。みんなが嫌いな私立医学部だけどね。ちなみに、俺もこの大学が嫌いだ。
P.S. ④「GraphQLをわざわざ書くのは理解できるけどな。」そうだとすると、REST やSOAP も書かないとまずくない?書くのだったら「Rails とNext のデータ受け渡しにGraphQLを使った経験が」という感じだと良いと思うけど。
P.S. ⑤「野村総研とデータを挙げるあたりSI寄りの仕事してたのかな。 」ちゃうねん。オレっちは多浪したからさ、そこのエントリーシートをかけなかったのよね。まぁまぁ大学が名門でさぁ、OB が誘ってくれるけど、年齢で弾かれて辛かったねん。
P.S. ⑥「ダウト。学費をどうやって稼いだんや 」えぇ、親の金です。だから家庭の都合でと書いてるじゃろ。
P.S. ⑦「本当に医学生ならここ数年の技術についてこの指摘ができる程詳しいわけないし少なくとも10年位は業界にいないとこういう感覚は身に付かない。 」たしかにおかしいよな。Kubernetes や Terraform を弄って、CI はGitHub Actions、CD にはAWS CodeDeploy を使って、ブログは Jekyll で静的サイトジェネレータを使いつつ、自前のサービスを立ち上げるためにRails,Next, React,PostgreSQL,Redis, Kafka, Elasticsearch, S3 の勉強をしつつ、スマホ環境のためにKotlin とSwift を触れているなんて変だよな。そういえば、Docker が来るまではVagrant で環境をつくっていたのも忘れてたよ。あと Rust を今年に学ぶ言語にするなんて、受験生にあるまじき行為だよな。うん。
P.S. ⑧年収については、基本給が 22万で、残業が200時間超えたらプラスだった気がする。あと、反社ベンチャーは「ポートフォリオの作成にまる一ヶ月間で拘束された、しかも無給で」という時点でヤバいのだけど、その会社にコミットしたのは「サイバーエージェントに紹介する」ということだけであって、同時期にDMM も面接に行けそうだったのよね。馬鹿なことをした。
P.S. ⑨「特にフロントエンドを見下す感じとか」オレ自身はフロントエンド出なんだよ。何を隠そう、Adobe Flash のゲームをつくっていたから。それでもって言うよ、バックエンドが一番大切だと。
P.S. ⑪「5~10年前に人売りに捕まった話とするなら、年収270万も現実味を帯びる。」特定派遣は消えてくれてよかったよ。俺のところは特定派遣すら未登録だったけど。
P.S. ⑫「いい医者になるのだよ 」うん、頑張る。「オッサン」「社会不適合者」「あるき方がキモい」「プログラミングwww」「同じ班になりたくない」「親も頭が悪い」「生きてて恥ずかしくないの?」とか言われてるけど、頑張る!
P.S. ⑬ 「フロントエンド別に給与低くないよ。」えっ、そうなの?WebDesigning を読む限りだと、400万もいかないイメージだけど。
P.S「医学部6年でまだプログラムに興味あるの不思議。」好きなんだよ、言わせるな///
P.S. 「フルタイムじゃないのでしょ?」いいえ、東京都内でフルタイム(ひどいときで、朝7から夜24)でしたよ。入った会社が「法律よりも、派遣先の評価」という会社だったからね。
P.S.サイバーエージェントさん、ときどき御社の社名を使って「弊社に恩を売ると、サイバーエージェントに紹介する」というベンチャーが跋扈しているので、どうにかしてください。わたくし、1ヶ月間もその嘘でjQuery とDjango を回収させられた挙げ句、月給2000円だったのですけど。本当に千円札2枚だったのですけど。ついでに、Android(Java) とiPhone(Objective-C)とjQuery を使ったフロントエンドシステムに、バックエンドにRails +Postgresql のシステムで、AWS を介したサービスを作らされたのも「サイバーエージェントに紹介する」と言われたからなんですけど。いったい、何なんですか?お前ん所は、コンプライアンスどうなってんじゃ。
P.S. 「好きそうだし医学部卒業してシレッとgoogle行ったれ 」無理っすよ。オレのスキルじゃ。
P.S. 「病院は」親がクリニックを持っていたけど、潰したよ。クリニックは人に患者がついていて、アルバイトを充てがっても患者さんが不幸になっていくのをみちゃったからね。自分は責任を持って患者さんを見たいから、バイトなんて使わないよ。
P.S.自分はコードを書きたいタイプだったから、SIer みたいなUML とか書いて下請けにコードさせるみたいなのは絶対に嫌だったのよね。だからSIer にはならなかったよ。やっぱり、現実にある計算機が解決できる問題を、より直接的に触れて解決したいと思っているから。仕事がハードでも全く問題なし。
P.S.FPGA すごいよね。ザイリンクスとアルテラがIntel とAMD に買収されて、すごいと思ったよ。2010年頃だっけ?、CPU の限界をFPGA で突破しようという話があったけど。手を出そうと思ったけど、高性能なチップが100万ぐらいして挫折した記憶があるよ。
P.S. 「東海大の医学部・学士」は自分は大学を卒業してないから無理でした。あと、それ以上の詮索はやめてくれ...
P.S. 「MySQLそんなに嫌いなのか。」そんなこと書いたつもりはないが、あれ?確かにMySQL はPostgreSQL より嫌いたけど、それはOracle が親元だったり、Unicode の扱いがファッキンだったり、ストレージエンジンが切り替わるときにカオスな目にあったけどさ、MySQL は好きだよ。お世話になったし。
P.S.給料については契約後に言われたのよ。というか、もともとは「サイバーエージェントに紹介」するという理由で、ポートフォリオの作成やDjango の改修を手伝ったつもりで、入社とかする気は全く無かったのよ。それが、いきなり他所の会社に面接を受けさせられて「君は明日からXXで働くから、履歴書を書いてね」と言われて、抗議したら「俺に恥ずかしい思いをさせるのか!業界に入れなくするぞ!」と大声でシャウトされて、気がついたらあっちが用意した履歴書に拇印してしまったのよね。有料職業紹介と派遣登録をしてない会社だったから、そんなかとはできないはずなんだけどね。ホームページには「年収550万」と書いてあったけど、実際はまったく違ったのだけどね。
P.S.「うーん、いらないかな。IT土方としての仕事しかないと思う。」だよな。おとなしく医者になるよ。ありがとう。
P.S. Elasticsearch は全文検索機能がほしいからやってるよ。Redis はインメモリなセッションストアとして使いたいのよ。Kafka はさ、twitter のファボをじっそうしたいけど、RDB の書き込み速度が上がらないから利用したいの。TensorFlow は全く理解できてないよ。それは、指摘されたとおり。
逆に聞くけど、以下の知識があったらどれぐらいもらえるわけ?東京23区で。
Permalink |記事への反応(21) | 20:59
設定が雑なので雑に書くぞ。URL貼りすぎると投稿できないから所々自分で見つけて。
Udemy終わったら本
DeepLearning
理論(というか↑で紹介してない本)
駄文なので最初にまとめておくと、知識ゼロ異業種から転職して何とかエンジニアとしての人生を始めました、という話。経歴がショボすぎて誰かの道標にすらならないだろうけど書き残しておく。実名で書く勇気はないので増田にて失礼。
PCを初めて触ったのは4歳の頃。
黒くてごついボディが幼心にぐっときたのを覚えている。この記憶があったためか、初めて自分で購入したPCはThinkPadだった。
我が家にインターネット開通。深夜に親が寝てからこっそり2chとニコニコ動画を見ていた。PS2でドラクエ8をやってグラフィックに感動する。まだプログラミングという言葉は知らない。母親のヒステリーと父親の拳骨に耐える日々だった。
地元の高校に進学。友人とホムペ(死語)を作成。html/CSSで文字の色か変えられたりアニメーションをつけられることに気付く。この頃もまだプログラミングに目覚めない。プログラム?理系の人がやるお仕事なんでしょ?という雑な認識であった。
もちろん文系学部に進学。人の視線が怖かったので前を向いて歩けず会話もままならなかったが、制服が可愛いという理由だけでお洒落カフェでバイトを始める。私は阿呆だが、この阿呆さないしは無鉄砲さでエンジニアになったと言っても過言ではない。
新卒入社した会社を3ヶ月で退職。支えてくれる彼くんとかもいなかったので実家でお通夜してた。鬱も発症して薬漬けになった。対面で人と話すことが難しいため、テキストベースで仕事ができる職を探し始める。ここでやっとプログラミングに出会う。
何にせよ無職だから時間は腐るほどある。ヨドバシでカモ丸出しの顔をしてThinkPadを買い、Javaで簡単なアルゴリズムを実装することから始めた。フィボナッチ数列を生成するとかクイックソートを実装するとか。あと5日ぐらいかけてServlet/JSPとMySQLでTODOリストを作った。
2ヶ月ほどJavaをやった頃、無謀にも機械学習に手を出し始める。本を一冊買って隅々まで読み込んだ。この頃から鬱が寛解し始める。プログラミングに夢中になって、1日12時間以上はPCの前に座ってひたすらコードを書いていた。不思議と疲れはなかった。ゲーム用に買ったデスクトップPCにそこそこ良いGPUがついていることが判明したので、Tensorflowでモデルもどきを作り、AI(笑)を組み込んだポートフォリオ用webアプリを3ヶ月かけて作成した。サンプルコードを超える範囲はドキュメントを読む、適宜技術書で知識を補うなどしてなんとかオリジナルと言えるコードをひねり出すこともこの頃覚えたと思う。なお肝心のモデルはチューニングは一切していないわ当然精度も悪いわでその筋の人が見たら鼻で笑うレベルであるが、一人でアプリケーションを作り切ることができたのは大いに自信に繋がった。
ポートフォリオを持って5社ほど受け、うち1社の小さな受託系企業に内定を貰い、無事職にありつくことができた。文系未経験第二新卒を雇う勇気を出してくれた会社には感謝しかない。
会社規模が小さいからか、個人の裁量が大きく、設計から実装、テストまで何でも任せてもらえた。良き上司に恵まれ、主にUnityやスマホアプリの開発を担当し、技術の奥深さ面白さに触れさせてもらった。自身が実装を担当したアプリが世に出ていくことの喜びみたいなものも味わえた。この会社は昨年度退職し、現在は500人規模の自社開発系企業でiOSアプリエンジニアをやっている。スキルは未熟だし対人恐怖的なものも治ってはいないけど、私はプログラミングが好きで、エンジニアとして骨を埋めたいとか身の程知らずにも思っている。
ご覧の通り、私は幼い頃からプログラミングに触れたりモノづくりをしていたわけではない。むしろ目覚めは遅い方である。そういう人でも興味があるなら、ITエンジニア目指してもいいんじゃないか、そうであってくれ、という気持ちで書いた。読んでくれてありがとう。プログラミングはいいぞ。