WindowsにPythonを導入して生成AI「Llama 3 Youko」を実行してみた

最近、巷では生成AIが盛んだとか。いや、もうすでに乗り遅れている感じが満載ですが、まだいけるはず!ChatGPTが公開されてから盛んですよねー。
そんな訳で、生成AIをWindows 11のマシンで試してみました。

まず必要となるのは、GPUが搭載されたマシンだとか。でも手元にないので、テキトーな仮想マシンを立ち上げてからテスト的に実施してみます。
そう、私はまだスタートラインにすら立っていないという。ボーナスが入ればきっと。。。
セットアップしたのは、CPU:2core、メモリ:16GB、HDD:480GBな環境です。

最初に、基本となる Python の導入です。導入バージョンは古いほうがいろいろ組み合わせ上サポートがあるらしく、最新のものが良いというわけではないとか。
そのためPython 3.10.11をダウンロードしてインストールしてみました。

https://www.python.org/downloads/windows/
https://www.python.org/ftp/python/3.10.11/python-3.10.11-amd64.exe

インストールが完了した後、自動的に環境変数のパスにpythonインストールディレクトリが登録されます。ただ即座に反映はしないようなので、一度サインアウトをするか、PCの再起動を実施したほうがよさそうです。
ソフトウェア導入すると大体再起動すると思いますが。次に使うコマンドpipが実行できなくて焦ったのは私だけ・・・(笑)

そのあとに、Pythonで使用するパッケージのインストールを、コマンドプロンプトを起動させて実行します。

今回は仮想なので実施しませんが、GPUがある場合はドライバ最新化とかも必要なようです。
nVIDIAなどの場合は、下記からcuDNN for CUDAも導入するとか。
https://developer.nvidia.com/cudnn-downloads?target_os=Windows&target_arch=x86_64&target_version=10&target_type=exe_local

導入したら、スタートメニューからpythonをクリックして実行させます。
今回実施してみる生成AIは、FacebookのMetaが開発したLlama-3に、昔Microsoftでよく見た女子高生bot「りんな」の学習を追加したLlama 3 Youko 8B Instructというものです。
https://huggingface.co/rinna/llama-3-youko-8b-instruct

何かよくわかりませんが、量子化というのがされているらしく、GPUのメモリが少なくても動作するようになっているらしいです。
今回の環境はGPUがないので、それでどこまで動くかがポイントでしょうか。

Llama 3 Youkoは、サイトに記載されているサンプルそのままを、起動したpythonへ貼り付けて実行です。
貼り付けした時に複数行の警告が出ますが、そのまま貼り付けさせました。

そうすると下記のような、良くわからない警告が表示されます。今回は実行できているので無視しましたが、eos_token_idというのを指定してあげないとだめって感じのことが書かれてます。そのうち調べる(たぶんやらない)リストへ追加です。

The attention mask and the pad token id were not set. As a consequence, you may observe unexpected behavior. Please pass your input’s attention_mask to obtain reliable results.
Setting pad_token_id to eos_token_id:128001 for open-end generation.
The attention mask is not set and cannot be inferred from input because pad token is same as eos token. As a consequence, you may observe unexpected behavior. Please pass your input’s attention_mask to obtain reliable results.

実行結果ですが、1時間20分ほどかかり、下記が出力されました。めちゃくちゃ時間がかかりますが、CPUだけでも文字生成できるのはすごいですね!

西田幾多郎(にしだきわたろう、1870年 – 1945年)は、日本の哲学者であり、京都大学教授を務めた人物です。
彼は「純粋経験」という概念を提唱し、現代日本哲学において最も重要な思想家の一人とされています。西田は、知識や認識が外部世界に基づくものではなく、むしろ主体的な経験によって生じるという考え方を示しました。この考え方は、現代の認知科学や脳神経科学にも影響を与えていると言われています。
また、西田は倫理学においても独自の立場を確立し、「善」の概念を再定義したことで知られています。彼の哲学は、戦後の日本哲学界に大きな影響を与えたと評価されており、その業績は現在でも広く研究され続けています。

ちなみにノートパソコンでも実行してみました。
CPU:Intel Core i5-1135G7 (4c/8T)、メモリ:23.7GB(24GB)な環境で、同じコマンドを実行すると10分程度で完了します。CPUだけでも、coreがたくさんある環境であればそこそこ動きそうです。

普通に安いグラフィックカードを使ったほうが、もっと早いんでしょうけどねー(笑)
自分でやるのは楽しいけど、普通にChatGPTなどのサービス利用していたほうが、日々進歩していくので楽かもです。

Google PlayでAndroidアプリを収益化すると個人情報が全世界に公開されるらしい

Qiitaトレンドで下記記事が上がってました。

こどおじがAndroidアプリ作ってたらGoogleに子供部屋を追い出された話
要約すると、新しい規約で収益化しているアカウントについては住所と氏名がGoogle Playで公開されるとのこと。記事の人はそのため、実家ではなく賃貸を別途契約して住み始めたって事みたいです。

そういえば、私もGoogle Playに登録していたなぁと思ってしばらく使ってないGmailを開いてみると。。。下記メッセージが届いておりすでに削除されていました!(笑)

[ご対応のお願い] デベロッパー アカウント(yamahide.biz)に問題があります
デベロッパー アカウントは使用されていないため、閉鎖される可能性があります

[最終通知] yamahide.biz 様、Google Play Console デベロッパー アカウントが閉鎖されました
デベロッパー アカウントは使用されていなかったため閉鎖されました

つかっていないアカウントだったのでショウガナイという気持ちと、25ドルがモッタイナイという気持ちとがせめぎあっています。まぁ、残っていてもAndroidアプリを公開する可能性は低いので、不要なアカウントは消していくっていう方針自体には同意です。

教訓としては、定期的にメール確認しましょうって事ですね!

CentOS 6 へ Java SE Development Kit 6 (JDK 6) をインストールしようとして error: open of sun-javadb-* が表示されるときの対処

ちょこっと検証でOracle JDK 6をインストールしようとしたんですがエラーが表示されました。

まずOracle JDK 6は下記より「jdk-6u45-linux-i586-rpm.bin」をダウンロード。
https://www.oracle.com/java/technologies/javase-java-archive-javase6-downloads.html

そして実行すると下記エラーが表示されました。

あれれーなんでだろうなー、っと考えていると、JDKダウンロードページには「Linux x86」と「Linux x64」の表記があることに気づきました。まさかと思って確認すると、インストールしたCentOS 6は64bit版という罠。

最近のOSは64bitしかないので、何も考えずに一番上のモジュールをダウンロード(笑)
正しい「jdk-6u45-linux-x64-rpm.bin」を再ダウンロードすると正常にインストールできました。

gpupdateにてグループポリシー更新時に「内部システム エラーのため、グループ ポリシーの処理は失敗しました」と表示された時の対処

何時からかは分かりませんが、コマンドプロンプトにて「gpupdate /force」を実行するとコンピューターポリシーの更新で下記が表示されるようになりました。

内部システム エラーのため、グループ ポリシーの処理は失敗しました。特定のエラー メッセージについては、グループ ポリシーの操作ログを参照してください。次の更新サイクルで、グループ ポリシーの処理が再試行されます。

色々やってみたところ、グループポリシーのファイルまではSYSVOLからコピーできていますが、レジストリに反映するところでコケていそうなことが判明しました。
そのため下記対応で改善しています。ただし本当に困っているときのみやってみてください。

1.まずレジストリエディタ (regedit.exe) を起動して次の場所を開きます。
コンピューター\HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Microsoft
2.「Microsoft」を右クリックして「アクセス許可」を開きます。
3.下にあるボタン「詳細設定」を開き、上の”所有者”の右にある「変更」を押して自分のアカウントに変更します。
そして下の「子オブジェクトのアクセス許可エントリすべてを、このオブジェクトからの継承可能なアクセス許可エントリで書き換える」にチェックを入れて、OKで閉じます。
4.”アクセス許可”に戻るため、上にある「Authenticated Users」を選択、下で「フルコントロール」にチェックを入れて「OK」で閉じてやりました。

やってやったぜ!セキュリティも糞もないノーガード戦法です。

ITでご飯を食べている人間とは思えないような対応ですが、しょせんは自分のPCなので無問題ですよ。

HPE MSAストレージのハードディスク(SAS)ファームアップデートを行ってみた

HPE MSA 1050 / MSA 2050 共有ストレージに搭載しているSAS ストレージ ディスクファームウェアのアップデートを行ってみました。
少し引っかかる点としては、ID名がmanageの場合はリモート作業ができないということです。実はこれに引っかかって2日ぐらい悩んでました(笑)

昔の製品名MSA P2000 G3の時、管理 (manage) と監視 (monitor) の2種類のIDがありました。現在の最新MSAでは、manageでログインするとまずパスワードの初期設定が表示され、昔の!manageデフォルトパスワードはパスワードルール上再設定できないようになっています。
そしてそのmanageだと、Telnet/FTPなどリモートログインは許可されていても、ファームアップデートのツールでログオンできませんでした。
セキュリティ上の理由でしょうかね?

まずストレージのファームは下記から型番を入力して絞り込みます。今回はWindowsで実行できるものをダウンロードしています。
Hewlett Packard Enterprise サポートセンター – HPE MSA 1050
Hewlett Packard Enterprise サポートセンター – HPE MSA 2050

ダウンロードしたファイルを実行するとHPEパッケージセットアップが表示されるので「インストール」を押します。

パッケージが回答されると、ファームアップデートの画面になります。ここでのユーザー名にmanageが使えません。事前に別の管理者IDを発行してください。
IPアドレス、ユーザー名、パスワードを入力して「続行」を押します。

HDDのファームが古いものがあるか自動的に調べて、古いものがある場合は“最新ではありません”と表示されます。内容を確認して「インストール」を押します。

しばらく待つと、ドライブのフラッシュが完了します。
正常に完了したことを確認して「閉じる」を押してください。

企業メールアドレスでMicrosoftアカウントを作成・登録しようとして「職場や学校のメール アドレスを使ってサインアップすることはできません」と表示された時の対処

企業ドメインをOffice 365(Microsoft 365)のメールとして使用している場合はメールアドレスのID管理がAzure ADが行うため、同じメールアドレスでMicrosoftアカウント(Microsoft Passport、Windows Live ID)の新規登録を行おうとすると下記エラーが表示されます。

職場や学校のメール アドレスを使ってサインアップすることはできません。Gmail や Yahoo! などの個人用メールを使うか、新しい Outlook メールを作成します。

You can't sign up here with a work or school email address.

職場または学校アカウント(Azure AD)は会社が作成して会社が管理、Microsoftアカウントは個人が作成して個人が管理するものであり、どちらも作成可能だとユーザーに分かりにくくなります。
そのため2016年9月に、職場または学校アカウントに登録されるたドメインと同じものは、Microsoftアカウントで登録しようとすると警告表示されるようになりました。

ただ2020年7月現在、Microsoftが提供しているサービスすべてがAzure ADに対応しておらず、従来のMicrosoftアカウントをログインIDとして使用しているものがあります。
そのサービス登録をしようとすれば、通常では作成できないMicrosoftアカウントが作成できます。

対象のサービスは下記です。Microsoft検索エンジンBingのキーワード広告を行うサービスです。下記リンクをクリックして「Sing up now」から企業メールアドレスを入力すればMicrosoftアカウント作成できました。
Microsoft Advertising

WindowsマシンでNginxを使ったリバースプロキシを設定してみた

nginx(エンジン エックス)はApacheと同じようなWebサーバのアプリケーションで、すでに世界中で使われています。
今回、このアプリケーションを使用してリバースプロキシをテストしてみたので、それをメモ書きしておきます。

Windows版はdownloadから nginx/Windows-1.19.1 といった命名規則のものをクリックしてダウンロードします。ダウンロードしたファイルはC:\などにそのまま展開してしまえばOKです。

Nginxの起動は、下記プログラムを実行すれば大丈夫です。
C:\nginx-1.19.1\nginx.exe

リバースプロキシとしての設定は、メモ帳で conf\nginx.conf を開き、下記赤字のものを記載すれば動作しました。

http {
include mime.types;
default_type application/octet-stream;

sendfile        on;

keepalive_timeout  65;

server {
    listen       80;
    server_name  localhost;

    location / {
        root   html;
        index  index.html index.htm;
    }

    error_page   500 502 503 504  /50x.html;
    location = /50x.html {
        root   html;
    }

    location  /reverse-proxy {
            rewrite /reverse-proxy/(.*) /$1  break;
            proxy_pass         http://192.168.0.31;
            proxy_redirect     default;
            proxy_cookie_path /site/Web/ /reverse-proxy/site/Web/;
    }
}
}

個人的にはまったのはproxy_cookie_pathの設定で、Webアプリケーションでクッキーを書き込んでいるんですが、その時のアドレスとリバプロ経由のアドレスが違うため、設定したクッキーが読み込めずにログインできなくなりました。
ブラウザ[F12]キーで開発者ツールを起動させ、リクエスト・レスポンスヘッダなどを眺めていたらパスが違うことに気づき、書き換えて無事に処理完了。

書き方は公式サイトのモジュールproxy_cookie_pathに詳しくあります。

Outlookの[RSSフィード]など使用しない不要な項目を非表示にする

Microsoft 365などOfficeをインストールすると一緒にインストールOutlookを使うことは多いと思いますが、起動して目にする項目で使わないものも多いと思います。
Outlookの使わない項目は非表示(削除)できるので、それで見た目をすっきりさせることができます。

まずOutlookを起動したら、キーワード [Alt] + [F11] の2つを同時に押します。

そうすると「Microsoft Visual Basic for Applicarions」というものが起動して表示されます。
左ペインの[Project 1]を右クリックして、[挿入]=>[標準モジュール]を押します。

表示された[Project 1 – Module 1]に下記の内容を貼り付けます。

Option Explicit

Public Sub HideFolders()

Dim oFolder As Outlook.Folder
Dim oPA As Outlook.PropertyAccessor
Dim PropName, Value, FolderType As String

PropName = "http://schemas.microsoft.com/mapi/proptag/0x10F4000B"
Value = %bool型%

Set oFolder = Session.GetDefaultFolder(%oldefaultfolders名前%)
Set oPA = oFolder.PropertyAccessor

oPA.SetProperty PropName, Value

Set oFolder = Nothing
Set oPA = Nothing
End Sub

%bool型% となっているところは下記の内容で置き換えます。
具体的には、非表示にする場合は
 Value = %bool型%

 Value = True
に書き換えます。

名前説明
False表示
True非表示

%oldefaultfolders名前% となっているところは下記の内容で置き換えます。
具体的に、RSSフィードを操作する場合は
 Set oFolder = Session.GetDefaultFolder(%oldefaultfolders名前%)

 Set oFolder = Session.GetDefaultFolder(olFolderRssFeeds)
に書き換えます。

名前説明
olFolderCalendar9予定表
olFolderConflicts19競合フォルダー (同期の失敗フォルダーのサブフォルダー)。 Exchange アカウントの場合のみ。
olFolderContacts10連絡先
olFolderDeletedItems3削除済みアイテム
olFolderDrafts16下書き
olFolderInbox6受信トレイ
olFolderJournal11履歴
olFolderJunk23迷惑メール
olFolderLocalFailures21ローカルの失敗フォルダー (同期の失敗フォルダーのサブフォルダー)。 Exchange アカウントの場合のみ。
olFolderManagedEmail29管理対象のフォルダー グループの最上位フォルダー。 Exchange アカウントの場合のみ。
olFolderNotes12メモ
olFolderOutbox4送信トレイ
olFolderSentMail5送信済みアイテム
olFolderServerFailures22サーバーの失敗フォルダー (同期の失敗フォルダーのサブフォルダー)。 Exchange アカウントの場合のみ。
olFolderSuggestedContacts30連絡先候補
olFolderSyncIssues20同期の失敗フォルダー。 Exchange アカウントの場合のみ。
olFolderTasks13タスク
olFolderToDo28To Do
olPublicFoldersAllPublicFolders18Exchange パブリック フォルダー ストア内の All Public Folders フォルダー。 Exchange アカウントの場合のみ。
olFolderRssFeeds25RSS フィード

2か所の置き換えが完了したら、上の再生ボタン ▲ を押します。

そうするとOutlookの表示がなくなりすっきりします。

ただこの設定はPCにインストールされたOutlookに対して行うため、例えばExchange Serverで使えるWebクライアント Outlook on the web(OWA)などでは表示されてしまいます。
それでも、多少はカスタマイズして便利に使っていきたいものですね。

ちなみに、Outlookのオプション値は下記を参考にしました。
OlDefaultFolders enumeration (Outlook) | Microsoft Docs