データセットを作るコードの修正版

前回はこのブログの記事をすべて取得するプログラムと取得した記事からデータセットを作成するプログラムが別でしたが、それらを1つのプログラムにまとめたのが以下です。

import requests
import time
import json
from bs4 import BeautifulSoup

def fetch_wordpress_posts(base_url, max_pages=50, delay=0.5):
    all_posts = []
    page = 1

    while page <= max_pages:
        url = f"{base_url}/wp-json/wp/v2/posts?per_page=100&page={page}"
        print(f"Fetching: {url}")
        r = requests.get(url)
        if r.status_code != 200:
            break
        posts = r.json()
        if not posts:
            break
        for post in posts:
            all_posts.append({
                "id": post["id"],
                "title": post["title"]["rendered"],
                "content": post["content"]["rendered"]
            })
        page += 1
        time.sleep(delay)

    return all_posts

def convert_to_qlora_format(posts):
    rec = 1
    dataset = []
    for post in posts:
        title = post["title"]
        content_html = post["content"]
        content_text = BeautifulSoup(content_html, "html.parser").get_text()
        if content_text.strip():
            dataset.append({
                "instruction": f"次のテーマで文章を書いてください:「{title}」",
                "output": content_text.strip()
            })
        rec += 1
    print(f"{rec} records converted")
    return dataset

if __name__ == "__main__":
    wordpress_url = "https://zikuu.space/monologue" 
    posts = fetch_wordpress_posts(wordpress_url)
    dataset = convert_to_qlora_format(posts)

    with open("qlora_dataset.json", "w", encoding="utf-8") as f:
        json.dump(dataset, f, ensure_ascii=False, indent=2)
    print("Dataset saved")

近々、小さめのLLMでファインチューニングをしてみようと思っています。そのときはまた記事にしますね。

パラメーター数が100億1000億を超えるような大きな言語モデルを一般の個人や小さな組織が開発するのは現時点では費用面で難しいですが、方法論や具体的な方法を知っていれば、余裕のある組織に入ったときに実践できます。なので、このようなことを個人が勉強する意義はありますし、将来、AI関連の企業に就職を希望している学生さんにとっても良い訓練になるのではないかと思っています。現時点では、モノづくり塾が応援できるのはこの辺りまで。

こういうことをやっていると、本当のAI塾長を作ってみなくなりますね。そのためにはロボットも作りたくなってきます。口や目や腕や手を動かし、問いかければ何かを話す。金属やカーボンの素材を加工して部品を作ったり、エッジAIを動かすための小さなコンピューターを内蔵し、各種センサーやモーター、アクチュエーターを使って、外部からの働きかけを知覚し動作を実行する。学ぶことがたくさんあって面白そうですよね。それと同時に、金属加工用の機械を増設したい、カーボンを焼く窯が欲しいと、際限なく設備投資意欲が湧いてきます。

何かを少し知ればもっと知りたくなる。何かを1つ知れば他のことも知りたくなる。私はこの「知りたい」という感情や衝動を知性と呼んでいるのですが、これは好奇心という言葉で表現しても良いでしょう。

モノづくり塾の使命は、自分の中にある知性や好奇心を引き出すことだと思っています。私の役割はその機械と環境を揃えること。

あなたは自分の知性や好奇心を引き出す日々を送っていますか?

以下、余談です。

過去に大病を患ったり事故に遭ったりと「死んじゃうんじゃないかな」という経験を何度かしました。誰もがいずれは死にますから、死ぬか死なないかではなく、いつ死ぬかどう死ぬかが関心事ですよね。子育てが終わるくらいの時期になったら、自分がどう死ぬかを考えても良いかなと思います。

モノづくり塾は技術や知識を共有する人が増えることを望んで運営している機関ですから、一子相伝のような秘密めいた伝承方式ではなく、なるべく多くの人に伝えられる方式を選びたいのです。そういう意味ではAI塾長のようなプロジェクトはモノづくり塾の指向性に合っているように思いますし、個人的にも自分の死に方とし最適なのではないかと感じます。

コメントする