見出し画像

機械仕掛けのAIニュース(2024/8/3)


AI 業界5つのトレンド

ここでは、提供されたデータセットに基づいて、AI 業界の 5 つのトレンドを特定し、説明します。

  1. オープンソース AI の台頭:Google は Gemma 2 ファミリーに 3 つの新しい大規模言語モデルを追加し、オープンソース AI への取り組みを強化しました。これらのモデルは、同社のフラッグシップである Gemini モデルよりも「小型、安全、透明」であると説明されています。このトレンドは、AI テクノロジーの民主化と、開発者や研究者がモデルを改良およびカスタマイズできるようにすることに重点を置いています。

  2. 用途特化言語モデルの増加:NVIDIA と Mistral AI は、特定のタスク向けに構築された言語モデルの増加に対応するため、協力して次世代言語モデルを開発しました。Mistral NeMo と呼ばれるこのモデルは、さまざまなユースケースに適用できる汎用性の高いモデルで、単一の GPU 上で優れたパフォーマンスを発揮します。このトレンドは、特定のタスクや業界に特化したモデルに対する需要の高まりを反映しています。

  3. 大規模言語モデルのオープンソース化:Meta は今週、Llama 3.1 と呼ばれる強力な大規模言語モデルのソースコードとモデル ウェイトを公開しました。Llama は、Open AI の ChatGPT や Anthropic の Claude などの競合他社と競争できるモデルです。このトレンドは、企業が大規模な言語モデルの開発とアクセスを民主化し、コミュニティによる改善を可能にしようとしていることを示しています。

  4. AI ソフトウェアの統合スタック:Nvidia は、AI ソフトウェアの包括的なスタックである AI Foundry を立ち上げました。これは、企業がカスタム モデルを開発および展開するプロセスを合理化し、AI をよりアクセスしやすくするのを支援することを目的としています。このトレンドは、AI テクノロジーの採用を促進し、企業が独自のデータと要件に基づいて AI ソリューションをカスタマイズできるようにすることに重点を置いています。

  5. ローカル AI トレーニングの増加:セキュリティと機密データの懸念から、ローカルでの AI トレーニングに対する関心が高まっています。開発者や企業は、クラウドではなく、ローカル ハードウェア上で AI モデルをトレーニングすることにますます注目しています。このトレンドは、機密データを保護しながら、カスタマイズされた AI ソリューションの開発を可能にします。

これらのトレンドから、AI 業界はオープンソース化、カスタマイズ、アクセス性の向上に向かって進んでいることがわかります。開発者、研究者、企業は、AI テクノロジーをより利用しやすく、カスタマイズしやすく、さまざまなアプリケーションやユースケースに適したものにするために協力しています。

今後の進化:AI は今後、よりオープンでアクセスしやすく、カスタマイズ可能なテクノロジーに進化していくでしょう。開発者や企業は、AI モデルを改良および適応させて、特定のニーズや要件を満たすことができるようになります。AI の民主化が進むにつれ、さまざまな業界やユースケースに革命をもたらす可能性があります。

課題:AI の進化に伴い、セキュリティ、プライバシー、倫理などの問題に対処する必要性が高まります。データの機密性、モデルのバイアス、AI の責任ある使用などの問題に対処することが、開発者、企業、規制当局の重要な焦点となるでしょう。

さらに、AI テクノロジーのアクセスと採用を拡大するには、AI に関する知識とスキルのギャップに対処することが不可欠です。教育、トレーニング、ツールへのアクセスを改善することで、より多くの人々が AI の力を活用できるようになります。

これらの記事は、AI 業界の最新の進歩とトレンドに関する洞察を提供し、AI の未来を形成する可能性のある動向を強調しています。

参考にした記事:
Google's lightweight Gemma LLMs get smaller, but they perform even better than before - SiliconANGLE: https://siliconangle.com/2024/07/31/googles-lightweight-gemma-llms-get-smaller-perform-even-better/
Power Text-Generation Applications with Mistral NeMo 12B Running on a Single GPU | NVIDIA Technical Blog: https://developer.nvidia.com/blog/power-text-generation-applications-with-mistral-nemo-12b-running-on-a-single-gpu/
Why Big Tech Wants to Make AI Cost Nothing: https://dublog.net/blog/commoditize-complement/
Integrating Image-To-Text And Text-To-Speech Models (Part 1) — Smashing Magazine: https://www.smashingmagazine.com/2024/07/integrating-image-to-text-and-text-to-speech-models-part1/
Nvidia AI Foundry And NIMs: A Huge Competitive Advantage: https://www.forbes.com/sites/karlfreund/2024/07/23/nvidia-ai-foundry-and-nims-a-huge-competitive-advantage/
How NVIDIA AI Foundry Lets Enterprises Forge Custom Generative AI Models | NVIDIA Blog: https://blogs.nvidia.com/blog/ai-foundry-enterprise-generative-ai/
xfastertransformer-gnr · PyPI: https://pypi.org/project/xfastertransformer-gnr/
Train and Run Your Own AI with GIGABYTE AI TOP: https://www.tweaktown.com/articles/10797/train-and-run-your-own-ai-with-gigabyte-top/index.html
Llama, Llama, Oh Give Me A Sign. What’s In The Latest IDSA Guideline? | R-bloggers: https://www.r-bloggers.com/2024/07/llama-llama-oh-give-me-a-sign-whats-in-the-latest-idsa-guideline/
Google Open Sources 27B Parameter Gemma 2 Language Model - InfoQ: https://www.infoq.com/news/2024/07/google-gemma-2/

ソースはNewsAPI、生成はCohere

上記記事は、NewsAPICohere APIを組み合わせて作成しました。
ベースとなった処理は以下投稿に書いています。

上記内容に

  • 各記事の冒頭の文章を使い、トレンドと課題を説明する

フローを組み込みました。
NewsAPIの/v2/everythingを使っています。
過去の記事も検索できるAPIです。
最新の記事を取得する場合、/v2/top-headlinesの方が向いているようです。
ただ、取得する記事のURLがhttp://google.news.com・・・と、Googleニュースのドメインが多くなり、記事テキストをスクレイピングできませんでした。
/v2/everythingだと元のURLを拾ってくれ、かつ比較的新しい記事もヒットします。

そのPythonコード

生成AI系の記事をピックアップするために、以下のパラメータを使いました。

'q': 'AI AND LLM AND Llama AND Gemma AND is'
(isは英語の記事を取り込むため。パラメータでenと英語を指定しても、日本語記事がヒットしたため)

記事生成のために追加したコードです。

# 記事の内容をスクレイピングし、要点を抽出して、新しい記事を生成

from cohere import Client
import requests
from bs4 import BeautifulSoup
import time

# Cohereクライアントの初期化
# CohereのAPIキーを設定
cohere_client = Client(COHERE_API_KEY)

def get_article_content(url):
    """指定されたURLから記事の内容とタイトルをスクレイピングして返す"""
    try:
        article_response = requests.get(url)
        article_response.raise_for_status()
        soup = BeautifulSoup(article_response.content, 'html.parser')
        
        # 記事の内容を抽出
        paragraphs = soup.find_all('p')
        article_content = ' '.join([p.get_text() for p in paragraphs])
        
        # タイトルを抽出
        title_tag = soup.find('title')
        article_title = title_tag.get_text() if title_tag else 'No Title'
        
        return article_content, article_title
    except Exception as e:
        print(f"Error fetching {url}: {e}")
        return None, None

def extract_key_points(content):
    """記事の内容から主要なポイントを抽出してリストで返す"""
    # 各段落の最初の3文をポイントとして抽出
    paragraphs = content.split('\n')
    key_points = []
    
    for paragraph in paragraphs:
        sentences = paragraph.split('.')
        sentences = [sentence.strip() for sentence in sentences if len(sentence.strip()) > 0]
        key_points.extend(sentences[:3])
    
    return key_points[:10]  # 主要なポイントを最大10個まで返す

def generate_article_from_points(points, references):
    """ポイントのリストから新しい記事を生成し、参考記事のタイトルとURLを追加する"""
    try:
        prompt = (
            "あなたはWebニュースサイトのジャーナリストです。"
            "まず、主要ポイント10を組み合わせてトレンドを5つ述べてください。次に、(1)各トレンドについて特徴と、(2)なぜそれが注目に値するのかを丁寧にわかりやすく説明してください。"
            "その次に各トレンドから全体を総括してAIの今後の進化と課題について述べてください"
            "最後にスクレイピングした記事の中から、参考にした記事のタイトルとURLを記載してください。\n\n" 
            + "\n".join(points)
        )
        # Cohere APIを使用してテキスト生成を行うためのメソッド
        response = cohere_client.generate(
            model='command-r-plus',
            prompt=prompt,
            max_tokens=7000,
            temperature=0.7,
            k=0,
            p=0.75
        )
        # 上記generate メソッドはAPIからの応答を返し、その結果が response 変数に格納
        new_article = response.generations[0].text.strip()
        
        # 参考にした記事のタイトルとURLを追加
        reference_text = "\n\n参考にした記事:\n" + "\n".join([f"{title}: {url}" for title, url in references])
        new_article += reference_text
        
        return new_article
    except Exception as e:
        print(f"Error generating article: {e}")
        return None

# 使用例(データフレーム df には 'url' カラムが含まれていると仮定)
all_key_points = []
references = []
for index, row in df.iterrows():
    url = row['url']
    print(f"Fetching and summarizing article: {url}")
    content, title = get_article_content(url)
    if content:
        key_points = extract_key_points(content)
        all_key_points.extend(key_points)
        references.append((title, url))
    time.sleep(1)  # 各リクエスト間に遅延を入れる

# 主要なポイントから新しい記事を生成
if all_key_points:
    combined_article = generate_article_from_points(all_key_points, references)
    print(f"Generated Article:\n{combined_article}")
else:
    print("No key points were extracted.")

この記事が気に入ったらサポートをしてみませんか?