カテゴリー
Free

AIを作ってみよう08

高級言語
高級言語

 AIシステム構築には良くPythonが使われいるようです。Wikiによると「インタープリタ型の高水準汎用プログラミング言語である。」とあるように30年前からあるようですがだいぶ高級な言語のようです。

 Pythonもコンパイルしてネイティブ実行ファイルを作ることができますが今はインタープリタ型のプログラムが動作する仕組みを考えてみます。

パソコンでPythonプログラムを実行

Pythonプログラムを読んで実行するプログラム

オペレーティングシステム&デバイスドライバー

ベーシックIOシステム

ハードウェア

 Pythonプログラムをハードウェアが実行するまでに何層ものプログラムが動かなければなりません。もし同じプログラムをマイコンで実行するとどうなるでしょうか。

マイコン用プログラム

ハードウェア

 マイコン用プログラムであれば直接ハードウェアを実行することができます。もちろん高級言語では簡単なことでもマイコン用プログラムでは大変な労力を必要とすることが多いので単純に比較して優劣を云々できません。しかしAIの中枢は単純な計算の繰り返しなはずです。マイコン用プログラムでもできるに違いありません。

 同じ計算でも全体の計算量が大きく違えばその性能差も大変な違いが生まれます。

カテゴリー
Free

AIを作ってみよう07

アセンブラ
アセンブラ

 ハードウェアの話が続いたのでここでソフトウェアに話題を切り替えます。AIを構築するためには膨大な計算を処理する装置が必要です。その計算をこなすためには電力が必要です。なぜ計算機は電力を必要とするのか。それは電気の有無を2進数として論理演算を繰り返すため電気がある状態とない状態を何度も何度も繰り返し作らなければならなくなったからです。

 であれば使う電力を減らすためには計算の回数が減るようにするのも一つの方法です。性能を上げるためには計算量を増やさなければならない、消費電力を減らすためには計算量を減らなさければならない。矛盾してますね。

 電子計算機が生まれたと同時にソフトウェアをどう効率よく製造するかの悩みも双子のように誕生したのです。それから幾十年人類の効率の良いソフトウェア製造方法へのチャレンジは続いています。

 プラグ付きケーブルをあっちこっち挿したり抜いたりして作っていたソフトウェアがメモリ内蔵にされるようになった時にマシン語が生まれ、すぐにマシン語と一対になったアセンブラ言語が作られました。この時人類は抽象化された言語でコンピュータと交流できるようになりました。

カテゴリー
Free

AIを作ってみよう06

 現在世界最速のスパコンの1コアあたりの予算を計算すると

158,976ノード × 52コア = 8,266,752コア

予算1,120億円 ➗ 総コア数8,266,752 = 13,548円

➗ 2.2GHz = 1コア1GHzあたり6,158円

 同じ計算を価格コムのデスクトップパソコンの本体だけのモデル価格.com限定 Core i7 に適用すると

予算72,800円 ➗ 8コア ➗ 3GHz =
1コア1GHzあたり3,033円

 予算に含まれる項目が異なり比較できる同士ではありませんがこれらの計算力を手に入れという観点で考えれば目安になります。

 クロック周波数100MHzあたり300円を目指せばこれらに対抗できるマシンができるかもしれません。

 20MHzのクロックで一個50円、5個で250円みたいな計算をしていると夢が広がります。64bitもいらないので8bitか16bitであれば可能性があるかもしれません。更に今のマイコンは低電力に向かっているのでそう遠くない未来に実現できるかもしれません。

 マイコンの方が目的にあったハードウェアを構成できるので構築費も電気代も安くなって良いと思います。

 パソコンとテンソルフローで何をやっているかわからないAIを作るよりもハードウェアレベルから動作を見ながら構築していく方が未来は広がると思いませんか。

カテゴリー
Free

AIを作ってみよう05

人工知能入門
人工知能入門

 なぜ8ビットマイコンを今更取り上げてAIを作ろうとしているかの経緯を話します。

 元々AIには興味を持っていたのですがGPUによる高速演算とテンソンフローの公開により続々と個人ベースで高性能な人工知能システムを完成させている事例を見聞きするにつれ自分もそれに参加したくなったのです。

 特にスマホにニューロエンジンと呼ばれる専用ハードウェアが搭載されたことが決定的な出来事でした。

 現在スマホのアプリエンジニアとして仕事をしておりいよいよ直ぐそこまでAIが近いてきています。

 今後もアプリ開発の現場に留まるためにはAIのスキルも必要と思いました。

 西暦2000年前後の頃に汎用ICやPCのグラッフィックボードを使用して低価格で高速計算機を構築する研究結果が出始めその後FPGAを使うなど高性能化が更に進んでいきました。このような背景が第三次AIブームを引き起こした遠因なのでしょう。スーパーコンピュータ並みの計算能力を個人が手に入れることができる時代になったのです。

 1995年に完成したGRAPE-4は5Wで243.2GFLOPSを達成したそうです。https://ja.m.wikipedia.org/wiki/濱田剛

 個人にとってはその計算機の開発費用もさることながら消費電力も重要な所有の条件です。大容量電力を個人ではとても用意できません。

 5Wなら自分でも容易に環境を作ることができます。

カテゴリー
Free

AIを作ってみよう04

 CPUは決まったのでそれを動かすにはどうしたら良いか勉強を始めました。

マイコンの勉強
マイコンの勉強

 8085はかなり古い初期型に近いマイクロプロセッサであるため電源を繋げばすぐ使えるというものではありません。目的にもよりますが多くの周辺ICや部品が必要です。

 8080になるともっと多くの部品が必要になり更に入手の難しいものもあるので一旦使用するのは保留とします。8085の周辺ICであればまだなんとか手に入れることができそうです。

カテゴリー
Free

AIを作ってみよう03

 マイクロプロセッサでAIを作るにしても具体的にどうするか決めてからではないと行動できません。ネットで「マイコン」と調べても無数に情報があり的を絞ることができません。

 第一条件として予算、高価で揃えられないものを夢みても空論で終わってしまうので費用を第一の条件とします。

 第二条件として普及度、今この時にしかないような特殊なものは使わないようにします。過去も有ったし未来も有るだろう、それは汎用品だからというものを第二の条件とします。

 この条件に当てはまると思ったのがIntel系の8ビットCPUです。極めて広範囲に普及した為に情報量が多く数十年間様々な分野で君臨しています。これからも廃れることはないでしょう。

UPD8080A
UPD8080A
D8085AC-2
D8085AC-2

 このCPUは割と今でも手に入ります。最新のCPUより割高ですが機能が少なく作りが大きいので素人が学習するには良い教材です。秋月であれば100円以下のCPUもありますが基本から技を得るためにヴィンテージCPUを選択しました。

カテゴリー
Free

AIを作ってみよう02

 鉄筋コンクリートではゲルマニュームラジオを動かすとができなかったのでトランジスタの力を借ります。

ダーリントン接続ラジオ
ダーリントン接続ラジオ

https://www.zea.jp/audio/schematic/sc_file/022.htm

 アンテナはベランダに出したビニール線(LANケーブルをばらしたもの)、コイルとバリコンとクリスタルイヤホンはゲルマニュームラジオで使ったもの、ダイオードをやめて高周波増幅に2SC1815を2個ダーリントンにし、低周波増幅も2SC1815を使いました。電源は単3電池2個です。

 鳴りました。分離性が悪い為、受信できた放送局は少ないですが確かに鳴りました。円筒型バリコンの内側を引き出せば短波放送も受信できたのです。

 実用性がないものですが動くととても楽しいものです。出だし吉と占われたと思いAIが完成するまで頑張ろうと思います。

 部品数が十数点の小さな電子回路からの出発ではゴールは見えない遥か彼方です。少しずつ進めていく過程をここで報告致します。

カテゴリー
Free

AIを作ってみよう01

 マイクロプロセッサーを使いAIを作ってみようと思いMPUをどうしようかと調べていました。当然最初は今流行りのARMを選択するのが普通です。しかし昨今凋落著しい国産半導体の報道に触れていると、できれば国産がいいなとの思いがつのります。この時点でいかにもグローバル化に乗り遅れている感が出てしまっていて恥ずかしい限りですが言い訳は多々思いつくので良しとします。

 手元には高価では無いデジタルテスター2台とダイソーで買ったハンダゴテしかありません。ヤフオクで色々な機材を揃えるのも大変なので出来るだけ低い周波数の世界でAIを実現することを目標にします。幸いにもMacとWindows PC、iPhoneやらAndroidスマホがあるので結構出来ることは多いと思います。


 しばらくぶりに工作するので本番前に練習をしました。幸先を占うためにも何かしら簡単に結果が出るものとしてラジオを作りました。

 最も簡単なラジオはゲルマニュウムラジオですが鉄筋コンクリートでは受信できないかもしれません。

ゲルマニュームラジオ
ゲルマニュームラジオ

 コイルはバーアンテナが良く使われますが手持ちも無く買ったとしても他に使い道もないので作ります。自作のアンテナコイルはポリウレタン線やリッツ線で作りますがそれも無いので使わなくなったLANケーブルをバラして厚紙で作ったボックスに巻きつけました。

 バリコンはポリバリコンが良く使われますがこれも手持ちがありません。バーアンテナと同じく買ったとしても他に使い道が無いので無駄になってしまいます。

 アルミホイルとキッチンペーパーを重ねて丸めます。それを二つ作り片方がもう一方の内側に差し入れることが出来るように若干小さくします。完全に差し込まれている時が2枚のアルミホイル間の静電容量が最大の時で少しづつ抜いていくと静電容量が下がります。立派なバリコンが出来上がります。

 ゲルマニュームダイオードとクリスタルイヤホンの自作は100均の材料では無理なので購入しました。

 一通り部品が揃ったのでブレッドボードに差し込んでクリスタルイヤホンを耳にしてみましたが雑音すら聞こえませんでした。

 予想通りです。