いろんなAIを調べてみる

 近年では、AI市場が目まぐるしく動き、どの会社がなんのAIを開発しているのかよくわからない。OpenAIやMicrosoftGoogle、Metaといった名の知れた企業であればわかりやすいが、Stability AIなど普段聞き覚えのない企業に関しての情報が著しく欠如してしまう。同時に、日々発展し続けているため、最新情報を追うのもまた困難である。AIを知るということも大切だが、実際に業務で使えるようなAI、例えばプレゼン資料を作るAIや統計データを簡単に集めて視覚的に優れた表にまとめてくれるAIなどを知り、利便性や効率性を向上させる意識も必要である。知識は常にアップデートしなければならず、同時に知識を技術へ昇華せなければならない。このような漸進的な取り組みはやりがいがあって面白い。

 

Sora

先日OpenAIが発表した生成AI。実用化はまだされていないが、既存の映像生成AIの性能とは一線を画し、高性能な反面様々な問題があると言われている。著作物の権利、クリエイターとの問題、表現の問題、フェイク動画など

youtu.be

動画の中間で「real」が48%という結果になっている。

チャットボットAI

ハルシネーションや回答の差異を理解する。

Chat gpt [OpenAI] ※MicrosoftはCopilotなどがある

Gemini [Google] など

 

画像生成AI

画像生成AIは有料なものが多く実際に試しにくい。

DALL-E [OpenAI]

Stable Diffusion [Stability AI] など

 

音楽生成AI

今まで調べたことのないジャンルだったが、OpenAIもすでに開発していた。

JukeBox [OpenAI]

Suno [Suno] など

 

他にもいろんな種類の生成AIがあるだろうが、この3つがあれば大体なんでもできそうな気がしてしまう。機能が統合された環境があれば利便性や効率性はますます向上するだろう。Chat gpt gpt-4はDALL-Eと連携し、画像を読み取って理解することができる。これだけでもかなり画期的である。情報収集により一層取り組み、時代に取り残されないようにしなければならない。

 

Timely

カレンダー、スケジュール管理

Gamma AI (一部無料)

プロンプトを投げるだけで資料が完成する

tl;dv (一部無料)

Zoomなどの議事録を作成する。notionやSlackに転送できる。chat gptに丸投げして要点整理もできる

Chat with any PDF

PDFを貼ると、そのPDFを参照して、こちらからの質問に答える。長文などの要点を抽出したい時に楽。

Whisper

音声を抽出する。会話をテキスト化する。使うにはシステム構築の知識が必要。

 

envaderを進める

カレントディレクトリ外のファイルを探す

バイナリ実行ファイル"run3"を実行したい。問題文にはすでに"run3"の場所を開示しているが、自分で探せるようになる必要がある。カレントディレクトリ内に"run3"がないため、whichでは探せなかった。find / -name "run3" -type f 2>/dev/null を使った。find / はルートディレクトリから網羅的に探す。-name "run3"は"run3"という名前を探すオプション。-type f はf=file タイプであること。f. ファイル d. ディレクトリ l. シンボリックリンク

2>/dev/null 標準エラー出力を捨てる。

 

テキストエディタについて

Linuxディストリビューションにはnanoがデフォルトで組み込まれている場合が多い。テキストエディタを変えるには別途インストールする必要がある。ただし、Linuxコマンドと呼ばれるものが全てnanoのコマンドであるということではなく、nanoを起動するためのコマンドがnanoコマンドで、Linuxコマンドがnanoコマンドを含んでいると表現できる。

envaderではUNIX系OSの標準はvimとされているので、vimを使った方が役立つかもしれない。vimのコマンドも慣れる必要があるのでターミナルの操作でできるだけ使う。

 

vimのw,eコマンドの差

wは空白を含む,eは空白を含まないとあるが、具体的には「I played the piano.」を例とすると、3wではtheの後ろの空白へ、3eではtheのeへカーソルが移動する。つまり、文字後の空白も前の文字に付随する形になる。

 

vimの学習方法

vimtutorと入力するとチュートリアルが表示される。ついでにやってみる。カーソルも移動もwasdではなくhjklキーなのでなれる必要がある。全ての動作をキーで行うので継続し覚えなければならない。

vimtutor

iで文字入力。Aの方がカーソルの直後からすぐに文字を追加できるので使いやすい。状況に応じて使い分ける。面倒臭いのが全角になっているとノーマルモードでも文字入力になってしまう点だ。

カレントディレクトリ内に新しくファイルを作る

忘れてしまっていたので復習した。touchコマンドを使う。既存のファイル名を指定すればタイムスタンプの更新、新規のファイル名を指定すれば新規ファイル作成をする。指定した時間にタイムスタンプを設定することもできる。

Linuxユーザ管理

作成したり削除するときにホームディレクトリの作成や削除を同時に行った方が効率的なので、useraddやuserdelを使うときはオプションに注意する。テキストエディタ等でパスワードファイルを直接編集するのは、システムが正常に動作しなくなる恐れがあるため避ける。

usermod -g [変更先グループ名] [変更するユーザ]

作成したグループにユーザーを追加する際は、ルートユーザーでgpasswd -a ユーザー名 グループ名

getentコマンドは、ユーザグループ情報やサービスと対応するポート番号、ホスト名とIPアドレスなどを調べられる。

 

useradd -m ホームディレクトリも同時に作成する。userdel -r ホームディレクトリも同時に削除する。

 

useradd -m Nxx -> userdel -r Nxx

Nxxが存在しないと表示される。原因を探るためにgetent Nxx を入力してみる。存在しなかったため、ユーザー名の入力が間違っていると仮定しコピペしてuserdelを実行したところ正常に削除できた。原因はNxxの前に余分に半角スペースが入っていたためであった。

 

passwdで変更できるパスワードはどこに使うパスワードか

一般にアカウントにログインするとき。su,sudoコマンド実行時など

変更時は画面には出力されないが入力はできている。

 

umaskコマンドのファイルにおける実行権限について

umask値を変更するとき、ファイルは666からumask値を引いた値が付与される権限をとなる。つまりファイルを作成したとき、実行権限は絶対に付与されないようになっている。これはセキュリティの観点から実行権限は慎重に付与すべきとされているからである。

 

SUIDの使い方

通常root権限がないと実行できないコマンドを一般ユーザーが使用する場合に使う。例えばpasswdなど。一般ユーザーが自身のパスワードを変更する時、root権限なしでpasswdを実行する必要がある。ただし、セキュリティ上の観点から慎重に行うべきである。

 

chmod chown chown -R 権限変更,所有者変更

ps プロセス確認

echo 画面出力

set シェル変数確認

unset シェル変数削除

unv 環境変数を表示

export シェル変数を環境変数にする

 

bash zsh

コマンドラインインターフェース。ターミナルがユーザーとコンピュータのインターフェースで、bashzshはコマンドとコンピュータのインターフェース。基本的なLinuxコマンドは同じだが、zshの方が高機能である。基本的にはbashが使われている。

 

パスを通す

export PATH=$PATH:

実行可能なファイルやコマンドが追加されるたびにパスを通す。毎回やると大変なので、パスが通っているディレクトリに追加された時点でパスを追加することもできる。

 

EnvaderでLinuxについて学ぶ

Virtual BoxにLinux Ubuntuをセットアップできたが、Linuxそのものを知らないためLinuxの扱い方を学習する手段を模索した。仮想空間で実際にコマンドを使用できる点と、環境構築により焦点を当てているEnvader(エンベーダー)という無料学習サイトを利用することにした。

Linuxのファイル構造やCUI,コマンドなどを学習する。学習コースにはLinuxの基礎的な知識をはじめ、データベースやターミナルに関して、発展的内容にはセキュリティに関する実践形式問題が用意されているため、とりあえず全コース受講することにする。その後、自分で構築したLinux ubuntuで学んだ内容を実際環境で行なってみたり、HTMLやCSSなど、また異なる方向へ展開してみるのも良い。

 

ps axuをよく使う。全てのプロセスを表示する。ターミナルが横に切れている場合はwオプションを追加すると改行で表示される。

[コマンド] & によりバックグラウンドで実行されているプロセスはps axuで確認することができる。

標準入力0 標準出力1 標準エラー出力2 は、[コマンド]◻︎2>&1のようにコマンドとの間にしかスペースはいらない。不要なところにスペースを入れると数字が引数として認識される。2&とすると1,2が統合され、1というフォルダへリダイレクトするというように認識される。

- ファイル

ディレクト

シンボリックリンク(ショートカット的な)

 

Linux Ubuntuのセットアップ

Ubuntuインストールの手順

1)公式サイトからダウンロード

2)Virtual Boxで「新規」からUbuntuを設定する

3)メモリやストレージの配分を設定する

4)Ubuntuを有効にする

5)Ubuntuをセットアップする

Ubuntu22.04.3 LTSとLSTでないバージョンがあったので長期サポートのLTSをダウンロード。ダウンロード後、ファイルを開かずVirtual Boxを起動し、「新規」を押し、名前、タイプ、バージョンを選択。次にメモリーとCPU数の割り当てを行う。初期値はコンピュータに応じた理想値に設定されているらしく、現在はメインメモリ2048MB,プロセッサー数は1である。後から変更もできるので、とりあえず今はこのままで作成する。仮想ハードディスクは25GBで作成する。確認画面でEFI有効とディスクの全サイズの事前割り当てという知らないことが出てきたので調べる。

 

EFIは従来のBIOSの後継で、セキュアブート(OSやブートローダーがデジタル署名されているかどうかを検証する仕組み)やネットワークブート(起動する際にHDDなどのローカルストレージデバイスからではなく、ネットワーク上のサーバーからオペレーティングシステムブートローダーを取得し起動する仕組み。大規模なネットワーク環境で一元的な管理が求められる場合やコンピュータに物理的なストレージがない場合などに使用される)がある。

 

ディスクの全サイズ事前割り当ては、設定した仮想ハードディスク容量を事前に確保しておくかの可否である。つまり、ストレージを先に分割するか、上限を決めておいて分割しないかということである。

 

EFIはセキュリティの強化につながるため有効にしたいが、仮想ディスクのセットアップが初めてなので、まず無効で作成する。ディスクの全サイズ割り当ては大した作業を行うわけではないのでOFFで作成する。

 

作成が完了した。続いてUbuntuをVirtual Box上で有効にする。設定->一般->高度からクリップボードの共有とドラッグ&ドロップを有効にすると、ホストとゲストの間で、コピー&ペースト、ドラッグ&ドロップが可能になる。最初に起動すると、DVD{ISOファイル(光学ディスクの内容をバイナリ形式でイメージ化したもので拡張子.iso)}を参照失敗と表示された。すでに手順を参照しているいくつものウェブサイトとは異なっているが、テキストボックス内に先ほどダウンロードしたUbuntuのISOファイルを選択する。ユーザーセットアップなどをしてインストールした。

Virtual BoxをWindows11にインストールしてみる

公開鍵認証があることと正しいURLであることを確認した。説明文が英語だがこれくらいなら読める。ホストOSはWindowsを選択し、ダウンロードする。順に進めインストールが完了した。

起動後何をするのか調べた。

・Extension Packをインストールする

・「新規」からOSを立ち上げる

・Vangrantという仮想環境を簡単に構築、管理、配布ができるソフトウェアがあるらしい

VirtualBoxよりもDockerを使う機会の方が多いらしい?

 

Extension Packとは

USB2.0コントローラ

USB3.0コントローラ

・Remote Desktop Protocolによる遠隔制御

外部のコンピュータから仮想マシンにアクセスし制御できるようになる。RDPクライアントを使用して仮想マシンのデスクトップに接続し制御する。RDPを使用するにはホストとなる仮想マシンで設定をする必要がある(ボート,認証など)

・ホストのウェブカメラが使えるようになる

・Seemless Mode

ホストOSと仮想マシンOSの行き来が簡単になる。現時点ではよくわからない

・ゲスト仮想ディスクの暗号化

セキュリティ向上

 

Linux Distributionをインストールする

一般的なLinux Ubuntuをセットアップしてみる。作成自体は簡単で、ネットワーク設定やセキュリティの強化など深く理解する必要がある。

 

VangrantやDockerはひとまずVirtual Boxに慣れてからにする。

 

手順に沿ってExtesion Packをインストールした。Virtual Boxの見た目は何も変わらないので、Linux OSを作ったら設定が増えているか確認する。

仮想マシンについて調べる

windows11に仮想マシンを構築してOSやLinuxコマンド、ネットワーク設定を行ってみる。仮想マシンについて何も知らないので、色々調べるところから始める。

仮想マシンを簡単に言うと、一台のコンピュータ内に複数のコンピュータを稼働させること。BIOSやOSもあり、一つの独立したコンピュータと同様である。ホスト環境での実行にリスクの伴うタスクを実行するために使われる。隔離されているため、ホストコンピュータには変更を加えられない。サーバの仮想化など他の目的にも使用できる。運用管理保守が容易。パフォーマンスは低下する。

調べる過程で「VMware」というワードが多く見られた。クラウドコンピューティングと仮想化のアメリカIT企業、現在はブロードコムが企業名、VMwareが製品ブランド名。

現代の業務用 IT システム環境では、サーバークライアント (OSアプリケーション)、ネットワーククラウドなどを仮想化することが一般的となっているが、その仮想環境を構築する際のデファクトスタンダードとして用いられるのが VMware 製品群である。IT 基盤製品が中心であるためシステムの画面には存在が表れず、システム利用者が直接 VMware 製品を目にするケースは少ないものの、日本においてもほぼ全ての企業の IT システムで採用されている。」(wiki,VMware,2024-02)

VMware Cloud on AWS,IaaSシェア世界一

「IaaS(Infrastructure as a Service)は、クラウドコンピューティングのサービスモデルの一つで、基本的なITインフラストラクチャリソースを仮想化し、オンデマンドで提供する仕組み。IaaSは、ユーザーにとってハードウェア、仮想マシン、ネットワーク、ストレージなどのインフラストラクチャを提供し、ユーザーはこれを利用してアプリケーションやサービスを構築・運用する。」

・Azure VMware Solution

Microsoft Azure...PaaS,IaaSを提供するクラウドコンピューティングサービス

「PaaS(Platform as a Service)は、クラウドコンピューティングのサービスモデルの一つで、アプリケーションの開発や運用に必要なプラットフォームを提供する仕組。開発者がアプリケーションのコードやデータに焦点を当て、基盤となるインフラストラクチャやランタイム環境、データベース、ネットワークなどの管理をプロバイダに委任することを可能にする。」

Microsoft AzureとVMwareが連携し、Azure上でVMwareの仮想化インフラストラクチャーを利用可能にするサービス。

 

IaaSやPaaSがどういったとき使われているのか知る必要があると考えた。

IaaS

1)プロビジョニングやデプロイメント(ユーザが利用可能にする)

2)オンプレミスのアプリケーションや仮想マシンクラウドに移行する

3)タスク処理に特定のOSやミドルウェアが必要なとき

4)大規模なデータベースやストレージが必要なとき

5)特定のセキュリティやコンプライアンス要件を満たす必要があるとき

6)独自のネットワーク設定が必要なとき

7)複数のアプリケーションを一元管理したいとき...単一の仮装マシンやリソースプールで管理できる。

PaaS

簡単にまとめると、アプリケーション開発の環境を整えるもの。

 

次は実際に仮想マシンを自分のパソコンに構築できるのか、コストや手順を調べて検討する。