ゆったり開発する日常

ただただ開発していく

LightGBMのGPU版をインストール時に pip コマンドでエラーが発生する場合の解決策

はじめに

LightGBM(cuda版)をインストールする際に、つまづいた点に関する解決策を書き残しておきます。

エラー内容

下記の pip コマンドで LightGBM のインストールを試みた。

pip install lightgbm 
    --no-binary lightgbm 
    --no-cache lightgbm 
    --config-settings=cmake.define.USE_CUDA=ON

すると、下記が出力されてインストールが進まない状態になった。

Usage:   
  pip install [options] <requirement specifier> [package-index-options] ...
  pip install [options] -r <requirements file> [package-index-options] ...
  pip install [options] [-e] <vcs project url> ...
  pip install [options] [-e] <local project path> ...
  pip install [options] <archive url/path> ...

no such option: --config-settings

解決策

Pip 23.1以降で--install-optionフラグが--config-settingsに置き換えられたため発生しています。 引用元:https://www.perplexity.ai/

どうやら、こちらの変更がなされているよう。
- pip の version が 23.1 以前: --install-option
- pip の version が 23.1 以後: --config-settings

なので、実行するインストールコマンドを、下記のように変更して実行すればOK。

pip install lightgbm 
    --no-binary lightgbm 
    --no-cache lightgbm 
    --install-option=cmake.define.USE_CUDA=ON

【追記】 こちらのインストールコマンドは依存関係により実行が失敗することがあるため、pip のバージョンを上げて --config-settings の方でインストールを試みることをオススメします。

おわりに

自分の開発環境下で使用している pip の version が古いため発生していた。

Pythonでvenv環境作成したときに「Error: Command '['~/venv/bin/python3', '-m', 'ensurepip', '--upgrade', '--default-pip']' returned non-zero exit status 1.」が出力されたときの解決法

はじめに

pip でインストールしたはずのライブラリが 「ModuleNotFoundError: No module named '~'」となり、解決策を探り始めた。

作業環境

エラー内容

コマンド「python3 -m venv venv」を打ったときに、「Error: Command '['~/venv/bin/python3', '-m', 'ensurepip', '--upgrade', '--default-pip']' returned non-zero exit status 1.」と出力されてしまう。

解決方法

パッケージ管理 apt を使用している場合
sudo apt update
sudo apt -y install python3.10-venv
パッケージ管理 apt-get を使用している場合
sudo apt-get update
sudo apt-get -y install python3.10-venv

さいごに

自分の Python 環境ではデフォルトで Python3.8 を採用していたが、最近Pythonのアップデートを行っていた。 Python3.8 時点で作成した環境 venv に対してアップデート後の Python3.10 で実行しようとしたのが誤りであった。

こちらを確認してほしい。
1. 現在の実行しようとしている Python のバージョン
2. Python のバージョンに適した venv, pip 環境になっているかどうか

Ubuntu で英かな切替時に「日本語(mozc)」のキー設定で反映されないときの解決方法

背景

普段キーボードで英語と日本語を切り替えを行うときに、「変換」ボタン=英語に切り替え、「無変換」ボタン=日本語に切り替えて入力してきた。

しかし、Ubuntu20.04では「変換」ボタン=「次のソース切替」という日本語(Ubuntu標準)・日本語(mozc)を切り替える仕様になっていた。

google 検索時の検索結果を見ても解決できず、この仕様により英かな切替時に若干のストレスを抱えていた。

そんな仕様を希望通り英かな切替できた経緯をブログに記録しておく。

環境

Ubuntu 20.04

何をしたのか?

1.「キーボードショートカット」の「次の入力ソースへ切り替える」を無効にする

設定場所は、こちらです。
「設定」→「キーボードショートカット」→「次の入力ソースへ切り替える」

2.「日本語(mozc)」のプロパティ設定を行う

設定場所は、こちら。
「日本語(mozc)」→「ツール」→「プロパティ」→「キー設定の選択(カスタム)(編集)」

「キー設定の選択」で「カスタム」となっている状態で、「編集」を押す。

入力キーが「Henkan」となっている場合は、「IMEを有効化」にする。
入力キーが「Muhenkan」となっている場合は、「IMEを無効化」にする。

その後、「適用」を押して最後に「OK」を押す。

まとめ

希望通り英かな切替ができた。

Ubuntu 20.04 のシステムでは、優先順位が「キーボードショートカット」→「日本語(mozc)のキー設定」となっているのが今回の要因だった。

AttributeError: module 'pke.base' has no attribute 'ISO_to_language' , 'lang_stopwords'

 

 キーワード抽出アルゴリズム pke に関する日本語の記事が少ないため、下記の記事が大変参考になった。

 

はじめての自然言語処理 pke によるキーフレーズ抽出 | オブジェクトの広場

 

 ただ記事の執筆日が 2019年のため、この記事の執筆時点(2022年03月16日)では、記事通りの動作が期待できない。

 

下記の箇所でエラーが発生している。

import pke
pke.base.ISO_to_language['ja_ginza'] = 'japanese'

 

原因

 pke/base.py が書き換えられているため。

 以前は、言語設定は pke/base.py に記述されていたが、変更後は、pke/lang.py で設定されている。

 

修正後

 pke.lang.stopwords['ja_ginza'] = 'japanese'

 

 

GitHub

github.com

LLMプロンプト探検「AIにToDoリストを作成してもらう」

きっかけ

Twitter で「Magic ToDo」を見つけたのがきっかけ。

「Magic ToDo」は、生成AI を用いて ToDo を自動生成してくれるようなサービス。

プロンプトを作成するメリット

  • カスタマイズが可能

プロンプト

# 役割
- あなたはプログラマーです。
- プログラミング言語はPythonを想定しています。
- アジャイル開発やテスト駆動開発を想定しています。

# 指示
- [タスク内容] に従って、タスクリストを生成してください

# 条件
- 優先順位が高い順番に列挙してください。
- タスクリストの内容は出来るだけ具体的にしてください。
- タスクリストは簡潔な文章にまとめてください。(30文字以内)
- 列挙するタスクリストは最大10個まで制限してください。
- タスク範囲を明確にしてください。
- 全タスクの重要度を合計100ポイントとして、タスクリストごとに重要度のポイントを追記してください。
- タスクリストを生成する上で、タスク内容に疑問点や不十分な点があればタスク内容に追加するべきことを提案してください。

# その他
- 出力はタスク内容の列挙のみにしてください。
- Step By Step で思考を進めてください。

[タスク内容] 
** ここにタスク内容を記述する **

雑感

具体的なアクションを自動で列挙してくれるので、タスク作成のタイムコスト削減できると感じた。

重要度を数値で可視化することによって、効果的なタスク実行に役に立てばと思う。

優先順位をタスク重要度の高い順に並べ替えてみるのもいいかも。

タスクについて、改めて考えることが出来た。

ChatGPT と戯れる日々で感じたこと

 

所感

数年前から GPT-3 の存在は認知していた。

きっかけは、自然言語処理 AI がブログ記事を掲載して、人間のような見事な文章を生成した Webニュースだった。

それから 3 年ほどで、だいぶ逞しく人間の未来を大きく左右する姿まで成長していた。

私も仕事で自然言語処理NLP)分野を触っているため、日本語でも大規模言語処理AI を自然な形で触りたいと切に願っていた。

そんな感じでワクワクしながら ChatGPT リリース日に触り始めた。

そっぽを向かれながらも、仲良くコミュニケーションしていくことが少しずつでき始めてきたので、記事を書いてみる。

出会い

チャット AI を触ったことが乏しく、リリース日から触り始めたものの「なにを話かければいいのか?」が思いつかず当たり障りのない会話をおこなっていた。

仕事の癖で、よく「情熱大陸」と言う番組名をデータのサンプルとして利用している。

ひと昔までの自然言語処理では、「情熱大陸」は「情熱」「大陸」と分割して解析されるため、どの程度まで行けるのかを確かめるために手癖のようにタイピングしていた。そして、初めての会話(プロンプト)がこちら。

 

情熱大陸を知ってい」

 

あっ...

Enter キーを間違え押してしまったため、言い直しを待ってくれず、返答を考え始めてしまった。なんとも無礼な初めての会話であった。

そして、生成される文章が Web 上で表示されていく様を目撃して、これがメディアなどでよく見る The・Computer って感じでたまらない w

初手で出した「情熱大陸」をテレビ番組があることを、悟っていた。

とてもじゃないけど、す ... すごい。と声がこぼれてしまった。

裏切り

意気揚々と ChatGPT と戯れる日々。

少しずつ、AI との会話に慣れ始めていた。

AI との会話からアイデアが溢れていく経験をし、おすすめの旅行先を教えてもらい仲が深まりつつあったある日、信じきっていた ChatGPT が嘘をついた。

 

すごいすごいと褒めていた AI にも弱点があった。

 

それは、学習が弱い箇所(最新の情報や希少な情報)に関する会話でより自然な形で事実と異なることを生成してしまうところだった。

 

「おすすめの旅行先を教えて!」の会話には正直に答えてくれたものの、「新宿にあるオススメの居酒屋を教えて!」の会話には Google Map にも載っていない居酒屋をつらつらと教えてくれた。AI の世界にはあるのかな。

この経験から、個別具体的な事例に関する質問等は向いてないと確信した。

ChatGPT を活用していく

これからは弱点を愛でながら、成長を見守っていく方針だ。

大規模言語処理 AI の成長にともなって、Chat系 AI との共存には 人間も会話内容(プロンプト)をより密なコミュニケーションが必要になっていくことを感じる毎日である。

理想的な コンシェルジュ AI が身近になり、時には厳しく時には優しく人間の未来を豊かにしていく時代も、もうそこまで来ているはずだ。