今おきていること
以下のようなコードが実行できなくなった。
$ pip install datasets
from datasets import load_dataset
train_dataset = load_dataset("llm-book/wrime-sentiment", split="train")
- エラーメッセージ
RuntimeError: Dataset scripts are no longer supported, but found wrime-sentiment.py
上記は『大規模言語モデル入門』(通称LLM本)のデータセットの読み込みであるが、これ以外にもHugging Faceに登録されている多くのデータセットで現在読み込みができなくなっている。
なぜエラーになる?
これはdatasets
ライブラリのversion4.0.0
以降におきるエラーだ。
Hugging Faceではデータセット登録時にpythonスクリプトを同時に登録することができ、読み込み時に必要な前処理等をスクリプトで実行するようになっている。
つまり、load_dataset()
したときに裏側ではPythonスクリプトが動いているということだ。
しかし、裏側で任意のPythonスクリプトが実行される仕様には脆弱性が指摘されており、読み込みの挙動が不安定になる原因にもなっている。
そこで、datasets==4.0.0
からは「裏側でのPythonスクリプトの実行が禁止された」というわけだ。
これは2025年7月からの変更なので、バージョンを指定せずにカジュアルにpip install
でdatasets
を入れている人は突然動かなくなる人も多いかも。
対処法
主な対処法は2つ。
1. datasets
の古いバージョンを指定する
そのまんま。新しいバージョンでエラーが出るので、
$ pip install datasets==3.6.0
とか指定すれば暫定的には解決。
以下のissueも参考:
2. dataset側で新しい形式に対応する
これは利用者側からはどうしようもないが、今後はデータセット側での対応が必要になりそう。
具体的には、スクリプト実行をやめてparquet形式などのファイルをそのままアップロードするようにすれば解決する。
一応Hugging Face側の内部で自動的にparquet形式に変換する"Auto update"という機能もあるみたいだが、データセットにpythonスクリプトが登録されている限り、「自動的にそっちを呼び出す→ エラーになる」ようだ。
結論
暫定的には古いバージョンを指定するのがよさそう。
今後Hugging Face側が公式にどう対応するか分からないので、引き続き注視していきたい。
ライブラリを使う時はバージョン指定しておくの大事だなと思いました。
ある日突然エラーになっちゃうもんね。