kaeken(嘉永島健司)Techブログ

主に情報科学/情報技術全般に関する知見をポストします。(最近は、特にData Science、機械学習、深層学習、統計学、Python、数学、ビッグデータ)

Copilot for Microsoft 365 まとめ

Copilot for Microsoft 365 – Microsoft Adoption

紹介記事のまとめ

Bringing the full power of Copilot to more people and businesses - The Official Microsoft Blog

The Official Microsoft Blog announced significant updates and expansions to Microsoft Copilot, aiming to enhance productivity and creativity for both individual users and businesses. Key highlights include:

  • Popularity and Milestones: Microsoft Copilot has reached over 5 billion chats and images, indicating its widespread acceptance and usage.

  • Feedback and Improvements: Microsoft is focusing on enhancing Copilot based on feedback, particularly from power users and Microsoft 365 customers who seek deeper integration and advanced features.

  • Copilot Pro Introduction: A new premium subscription, Copilot Pro, is launched to offer advanced AI capabilities, including priority access to the latest models like GPT-4 Turbo, enhanced AI image creation, and the ability to create customized Copilot GPTs. This service is available at $20 per month per user and extends Copilot AI capabilities to Microsoft 365 Personal and Family subscribers.

  • Expansion for Businesses: Copilot for Microsoft 365 is now available to businesses of all sizes, including small and medium-sized businesses, with no seat minimum. This version is integrated into a suite of Microsoft apps, offering advanced AI assistance across documents, emails, meetings, and more.

  • Mobile App Availability: The Copilot app is now accessible on iOS and Android phones, bringing the AI companion's features to mobile users.

  • New Features and Accessibility: Microsoft continues to roll out new features for Copilot, including specialized Copilot GPTs for topics like fitness and travel. Copilot has also been added to the Microsoft 365 mobile app, enhancing accessibility for users with a Microsoft account.

These updates aim to make Copilot more accessible and powerful for a wide range of users, from individuals to large organizations, enhancing productivity, creativity, and overall performance through AI-driven assistance.

Microsoft Copilotの機能拡張とアップデートに関する公式Microsoftブログの発表の要約は以下の通りです:

  • 人気とマイルストーンMicrosoft Copilotは、5億回以上のチャットと画像の利用に到達し、その広範な受け入れと使用を示しています。

  • フィードバックと改善Microsoftは、特にパワーユーザーやMicrosoft 365の顧客からのフィードバックに基づいて、Copilotの機能強化に注力しています。これらのユーザーは、より深い統合と高度な機能を求めています。

  • Copilot Proの導入:新しいプレミアムサブスクリプションであるCopilot Proが発表されました。これは、GPT-4 Turboなどの最新モデルへの優先アクセス、強化されたAI画像作成、カスタマイズされたCopilot GPTの作成能力など、高度なAI機能を提供します。このサービスは、月額20ドルで提供され、Microsoft 365 PersonalおよびFamilyサブスクライバーへのCopilot AI機能が拡張されます。

  • ビジネス向けの拡張:Copilot for Microsoft 365は、小規模および中規模のビジネスを含む、すべてのサイズのビジネスに対して利用可能となりました。これには、席数の最小限度がなく、一連のMicrosoftアプリに統合され、ドキュメント、メール、会議などで高度なAIアシスタンスを提供します。

  • モバイルアプリの可用性:Copilotアプリは、iOSおよびAndroidの携帯電話で利用可能になり、モバイルユーザーにAIコンパニオンの機能をもたらします。

  • 新機能とアクセシビリティMicrosoftは、フィットネスや旅行などのトピックに特化したCopilot GPTなど、Copilotに新機能を続々と追加しています。Copilotはまた、Microsoftアカウントを持つユーザー向けにMicrosoft 365モバイルアプリに追加され、アクセシビリティが向上しています。

これらのアップデートは、個人から大規模な組織まで、幅広いユーザーにCopilotをよりアクセスしやすく、強力にすることを目的としており、AI駆動のアシスタンスを通じて生産性、創造性、全体的なパフォーマンスを向上させることを目指しています。

Introduction to Microsoft Copilot For 365: What You Need to Know!

The article introduces Microsoft Copilot for 365, an AI-powered tool designed to enhance productivity within the Microsoft 365 environment. It explains how Copilot for 365 integrates with Microsoft applications like Word, Excel, PowerPoint, Outlook, and Teams to assist users by understanding and interacting in natural language, helping with tasks ranging from drafting emails to analyzing data and managing calendars.

Copilot for 365 is distinguished by its AI capabilities, which allow it to learn from interactions and provide personalized assistance, making it an innovative addition to the Microsoft suite. Initially, Microsoft is rolling out Copilot for 365 to a select group of enterprise clients, with a cost structure that includes a requirement for a minimum purchase of 300 licenses at $30 each, alongside a Microsoft 365 E3 or E5 license.

The article also outlines the expected expansion of Copilot for 365 to commercial clients in 2024, including smaller businesses, without a minimum quantity requirement but maintaining the $30 per user per month pricing. It emphasizes the importance of SharePoint data for full functionality and suggests that businesses considering Copilot under Microsoft 365 Business Standard may need to upgrade to Microsoft Business Premium for optimal use.

Furthermore, the article provides strategies for businesses looking to adopt Copilot for 365, such as understanding licensing requirements, investing in training, ensuring data governance and security, running pilot programs, and staying updated on Microsoft's developments regarding Copilot.

In summary, Microsoft Copilot for 365 is presented as a significant innovation that promises to transform work within the Microsoft 365 suite by providing AI-powered assistance, with a phased rollout strategy emphasizing careful introduction and adaptation to business needs.

この記事は、Microsoft 365 環境内での生産性を向上させるために設計された AI 駆動のツールである Microsoft Copilot for 365 を紹介しています。Copilot for 365 は、Word、ExcelPowerPointOutlook、Teams などの Microsoft アプリケーションと統合し、自然言語での理解と対話によって、メールの起草からデータの分析、カレンダーの管理までのタスクを支援する方法を説明しています。

Copilot for 365 は、相互作用から学習し、パーソナライズされたアシスタンスを提供する AI の能力によって区別され、Microsoft スイートへの革新的な追加となっています。当初、Microsoft は Copilot for 365 を一部のエンタープライズクライアントに段階的に導入しており、300 ライセンスを最低 $30 ずつ購入する要件を含むコスト構造と、Microsoft 365 E3 または E5 ライセンスが必要です。

また、記事では、2024 年に小規模ビジネスを含む商業クライアントへ Copilot for 365 を拡大することが予想され、最小数量要件なしで、ユーザーあたり月額 $30 の価格を維持しながらも提供されると概説しています。完全な機能性のためには SharePoint データが重要であり、Microsoft 365 Business Standard の下で Copilot を検討しているビジネスは、最適な使用のために Microsoft Business Premium にアップグレードすることが推奨されています。

さらに、Copilot for 365 を採用しようとしているビジネスに対して、ライセンス要件の理解、トレーニングへの投資、データガバナンスとセキュリティの確保、パイロットプログラムの実施、Microsoft の Copilot に関する開発について最新情報を得るといった戦略を提供しています。

要約すると、Microsoft Copilot for 365 は、AI 駆動のアシスタンスを提供することで、Microsoft 365 スイート内での作業を変革することを約束する重要な革新として提示され、ビジネスニーズに合わせて慎重な導入と適応を強調する段階的な展開戦略が特徴です。

Copilot for Microsoft 365 とは?特長や使い方を分かりやすく解説|クラウドテクノロジーブログ|ソフトバンク

この記事では、2023年に発表された「Copilot for Microsoft 365」について詳しく解説しています。これは、組織内の生産性と業務効率を向上させるために、Microsoft Officeのアプリケーション(Teams、Word、ExcelPowerPointOutlookなど)にOpenAIのGPT-4に基づく大規模言語モデル(LLM)を統合する新製品です。Copilot for Microsoft 365の主な特徴には、Microsoft 365ツールとのシームレスな統合、ビジネスデータとの安全なLLM接続(Azure OpenAI Serviceを利用しており、このデータをLLMの学習には使用しない)、自然言語でのリアルタイムかつ正確な回答、Microsoftのセキュリティフレームワークに基づく強固なデータ保護、そしてMicrosoft製品間での横断的な作業をサポートする機能が含まれます。

記事は、Copilot for Microsoft 365がMicrosoft Office製品群でどのように利用できるかを具体的に紹介しています。例えば、Teamsでの会議中に主要な議論ポイントを要約しアクションアイテムを提案したり、Wordでドキュメントの初期ドラフトを迅速に提供したり、Excelでデータを分析してプロフェッショナルなデータ視覚化を作成したり、PowerPointで過去のドキュメントからコンテンツを追加して美しいプレゼンテーションを作成したり、Outlookでメールスレッドを効率的に管理したりする機能があります。

導入タイムラインについても触れており、2023年11月1日から日本でEA/EAS契約向けに提供開始され、2024年1月16日からはCSP契約、Commercial Direct契約向けにも提供が開始されると発表されています。Copilot for Microsoft 365を契約できるベースライセンスには、「Microsoft 365 E3またはE5」「Business Standard」「Business Premium」「Office 365 E3/E5」が含まれます。ソフトバンクは2024年2月からCSP契約向けに提供開始する予定です。

また、Copilot for Microsoft 365を導入するための準備手順についても説明しており、Copilotによってアクセスされる情報の範囲を確認し、使用可能なアプリとサービスをチェックし、Microsoft 365管理センターからライセンスを割り当てる手順が含まれています。Copilot for Microsoft 365が業務に革命をもたらす可能性が高いと結論付けており、ソフトバンクは対象ライセンスに対して永続割引オファーを実施していると述べています。このブログは2023年7月19日までの情報に基づいて作成されており、仕様変更の可能性と情報の最新性を維持する難しさが指摘されています。

1章: Fundamentals of Data Engineering まとめ

Fundamentals of Data Engineering まとめ

Link

Fundamentals of Data Engineering [Book]

目次en

I. Foundation and Building Blocks
1. Data Engineering Described
2. The Data Engineering Lifecycle
3. Designing Good Data Architecture
4. Choosing Technologies Across the Data Engineering Lifecycle
II. The Data Engineering Lifecycle in Depth
5. Data Generation in Source Systems
6. Storage
7. Ingestion
8. Queries, Modeling, and Transformation
9. Serving Data for Analytics, Machine Learning, and Reverse ETL
III. Security, Privacy, and the Future of Data Engineering
10. Security and Privacy
11. The Future of Data Engineering

1章まとめ

What Is Data Engineering?

  • Definition and Purpose: Despite its popularity, there's confusion about data engineering's meaning and the role of data engineers. Data engineering has evolved with data analytics and the rise of data science in the 2010s. It's crucial to define what data engineering and data engineers entail.

  • Diverse Definitions: Over 91,000 unique definitions highlight the field's complexity. Some key expert definitions include:

    • Data engineering involves creating interfaces and mechanisms for data flow and access, maintained by specialists (data engineers) to keep data available and usable. Data engineers set up and operate data infrastructure for analysis by analysts and scientists.
    • Two primary types of data engineering:
      1. SQL-focused: Uses relational databases for data storage and processing with SQL or SQL-based languages, sometimes utilizing ETL tools.
      2. Big Data–focused: Relies on Big Data technologies (Hadoop, Cassandra, HBase) and frameworks (MapReduce, Spark, Flink) for data processing, with programming languages like Java, Scala, and Python for primary processing.
    • Data engineering is seen as a superset of business intelligence and data warehousing, incorporating software engineering elements and specializing in big data systems, the Hadoop ecosystem, stream processing, and large-scale computation.
    • It emphasizes the movement, manipulation, and management of data, offering a broad spectrum of interpretations about its essence.

データエンジニアリングとは何か?

  • 定義と目的: データエンジニアリングの意味やデータエンジニアの役割についての混乱があります。データエンジニアリングはデータ分析と2010年代のデータサイエンスの台頭とともに進化してきました。データエンジニアリングとデータエンジニアの定義を明確にすることが重要です。

  • 多様な定義: 91,000以上のユニークな定義がこの分野の複雑さを示しています。いくつかの重要な専門家の定義を挙げます:

    • データエンジニアリングは、データの流れとアクセスのためのインターフェースとメカニズムを作成する一連の操作を含みます。専門家(データエンジニア)によってデータが利用可能かつ使用可能な状態に保たれます。データエンジニアは、分析者や科学者による分析のためのデータインフラを設定し、運用します。
    • データエンジニアリングの2つの主要なタイプ:
      1. SQLに焦点を当てた: リレーショナルデータベースをデータの保存および処理に使用し、SQLSQLベースの言語で処理を行います。時にはETLツールを使用します。
      2. ビッグデータに焦点を当てた: ビッグデータ技術(Hadoop、Cassandra、HBase)およびフレームワークMapReduce、Spark、Flink)を使用し、JavaScalaPythonなどのプログラミング言語で主に処理を行います。
    • データエンジニアリングは、ビジネスインテリジェンスやデータウェアハウジングの上位集合と見なされ、ソフトウェアエンジニアリングの要素やビッグデータシステム、Hadoopエコシステム、ストリーム処理、大規模計算の概念を統合しています。
    • データの移動、操作、および管理について強調し、データエンジニアリングの本質について幅広い意見が含まれています。

Data Engineering Defined

  • Core Activities: A data engineer is responsible for acquiring data, storing it, and preparing it for use by data scientists, analysts, and others.
  • Definition: Data engineering involves the development, implementation, and maintenance of systems and processes for transforming raw data into high-quality, consistent information useful for downstream applications like analysis and machine learning.
  • Intersections: It intersects with security, data management, DataOps, data architecture, orchestration, and software engineering.
  • Lifecycle Management: Data engineers manage the entire data engineering lifecycle, from sourcing data to making it available for analytical or machine learning purposes.

データエンジニアリングの定義

  • 主要活動: データエンジニアは、データの取得、保存、およびデータサイエンティスト、アナリストなどが使用できるように準備する責任があります。
  • 定義: データエンジニアリングは、生データを分析や機械学習などの下流アプリケーションに有用な高品質で一貫性のある情報に変換するためのシステムとプロセスの開発、実装、および維持管理を含みます。
  • 交差点: セキュリティ、データ管理、DataOps、データアーキテクチャオーケストレーション、およびソフトウェアエンジニアリングと交差します。
  • ライフサイクル管理: データエンジニアは、データのソースから取得して分析目的や機械学習目的で利用可能にするまで、データエンジニアリングのライフサイクル全体を管理します。

The Data Engineering Lifecycle

  • Holistic Context: Emphasizes viewing data engineering roles within the holistic context of the data engineering lifecycle.
  • Lifecycle Stages:
    • Generation: The origin of data.
    • Storage: Where data is kept.
    • Ingestion: The process of bringing data into the system.
    • Transformation: Modifying data to a usable format.
    • Serving: Making data available for use.
  • Undercurrents: Highlights critical ideas spanning the entire lifecycle, including security, data management, DataOps, data architecture, orchestration, and software engineering.

データエンジニアリングのライフサイクル

  • 包括的なコンテキスト: データエンジニアリングの役割を、データエンジニアリングのライフサイクルの包括的なコンテキスト内で見ることを強調します。
  • ライフサイクルの段階:
    • 生成: データの起源。
    • 保管: データが保持される場所。
    • 取り込み: システムにデータを取り込むプロセス。
    • 変換: 使用可能な形式にデータを変更すること。
    • 提供: 使用のためにデータを利用可能にすること。
  • 基本概念: セキュリティ、データ管理、DataOps、データアーキテクチャオーケストレーション、およびソフトウェアエンジニアリングを含む、ライフサイクル全体にわたる重要な概念を強調します。

Evolution of the Data Engineer

  • Early Days (1980 to 2000): From data warehousing beginnings in the 1970s, with significant developments in the 1980s, including the official coining of "data warehouse" by Bill Inmon in 1989. The era saw the rise of relational databases and SQL, popularized by Oracle, and the need for dedicated data warehousing and BI tools.
  • Data Modeling Techniques: Ralph Kimball and Bill Inmon developed foundational data-modeling techniques for business logic representation in data warehouses, still in use today.
  • Scalable Analytics: Introduction of MPP databases for scalable analytics, supporting large data volumes, and the emergence of roles like BI engineer, ETL developer, and data warehouse engineer.
  • Internet Era: Mid-1990s mainstream internet adoption led to the rise of web-first companies (e.g., AOL, Yahoo, Amazon) and the dot-com boom, driving advancements in web applications and backend systems.

データエンジニアの進化

  • 初期(1980年から2000年): 1970年代のデータウェアハウジングの始まりから、1980年代の重要な発展、1989年にビル・インモンによって「データウェアハウス」という用語が公式に造られた時代まで。この時代は、リレーショナルデータベースとSQLの台頭、オラクルによる技術の普及、専用のデータウェアハウジングおよびBIツールの必要性を見ました。
  • データモデリング技術: ラルフ・キンボールとビル・インモンは、データウェアハウス内のビジネスロジックを表現するための基礎的なデータモデリング技術を開発し、これらは今日でも広く使用されています。
  • スケーラブルな分析: 大量のデータを処理するための複数のプロセッサを使用するMPPデータベースの導入、大量のデータをサポートするスケーラブルな分析の第一時代の幕開け、BIエンジニア、ETL開発者、データウェアハウスエンジニアなどの役割の出現。
  • インターネット時代: 1990年代半ばにインターネットが主流になり、AOL、Yahoo、Amazonなどのウェブファースト企業の台頭とドットコム・ブームが始まり、ウェブアプリケーションとそれを支えるバックエンドシステム(サーバー、データベース、ストレージ)の進歩を促進しました。

  • Early 2000s Data Engineering Evolution: Post-dot-com bust, companies like Yahoo, Google, and Amazon emerged as tech giants, initially relying on traditional databases but quickly outgrowing them due to the need for more scalable, cost-effective solutions.

  • Rise of Commodity Hardware and Big Data: The affordability of hardware and innovations in distributed computing led to the decentralization of services and the start of the big data era, characterized by the ability to analyze vast datasets to uncover patterns and trends.
  • Google's Influence and Apache Hadoop: Google's publications on the Google File System and MapReduce in 2003 and 2004 respectively, marked a pivotal moment for data technologies, inspiring the development of Apache Hadoop by Yahoo engineers, which significantly impacted the field of data engineering.
  • Amazon's Contributions: Amazon developed solutions like EC2, S3, and DynamoDB to meet its data needs, offering these services through AWS. This marked the beginning of the public cloud era, revolutionizing software and data application development.
  • Impact on Modern Data Engineering: These developments laid the groundwork for the current data ecosystem, shaping the field of data engineering as we know it today.

Unordered List in English

  • Post-dot-com bust, companies like Yahoo, Google, and Amazon emerged as tech giants, initially relying on traditional databases but quickly outgrowing them due to the need for more scalable, cost-effective solutions.
  • The affordability of hardware and innovations in distributed computing led to the decentralization of services and the start of the big data era, characterized by the ability to analyze vast datasets to uncover patterns and trends.
  • Google's publications on the Google File System and MapReduce in 2003 and 2004 respectively, marked a pivotal moment for data technologies, inspiring the development of Apache Hadoop by Yahoo engineers, which significantly impacted the field of data engineering.
  • Amazon developed solutions like EC2, S3, and DynamoDB to meet its data needs, offering these services through AWS. This marked the beginning of the public cloud era, revolutionizing software and data application development.
  • These developments laid the groundwork for the current data ecosystem, shaping the field of data engineering as we know it today.

Japanese Translation

  • ドットコムバブル崩壊後、Yahoo、GoogleAmazonなどの企業が技術大手として台頭し、当初は従来のデータベースに依存していましたが、よりスケーラブルでコスト効率の高いソリューションが必要になるにつれてすぐにそれらを超えました。
  • ハードウェアの手頃な価格と分散コンピューティングのイノベーションにより、サービスの分散化が始まり、大量のデータセットを分析してパターンや傾向を明らかにすることが特徴のビッグデータ時代が始まりました。
  • GoogleGoogleファイルシステムおよびMapReduceに関する2003年および2004年の出版物は、それぞれデータ技術にとって画期的な瞬間をマークし、YahooのエンジニアによるApache Hadoopの開発を触発し、データエンジニアリングの分野に大きな影響を与えました。
  • Amazonは、EC2、S3、DynamoDBなどのソリューションを開発してデータニーズに対応し、これらのサービスをAWSを通じて提供しました。これはパブリッククラウド時代の始まりをマークし、ソフトウェアおよびデータアプリケーションの開発を革命しました。
  • これらの開発は、現在のデータエコシステムの基盤を築き、今日我々が知るデータエンジニアリングの分野を形作りました。

The 2000s and 2010s: Big Data Engineering

  • Hadoop Ecosystem: Open source big data tools within the Hadoop ecosystem matured and became widely accessible, allowing businesses worldwide to use advanced data tools.
  • Transition to Real-Time Data: A significant shift from batch computing to event streaming, introducing the era of big "real-time" data.
  • Emergence of New Technologies: Tools like Hadoop, Apache Pig, Hive, Dremel, HBase, Storm, Cassandra, Spark, and Presto revolutionized data engineering, moving away from traditional GUI-based tools to code-first engineering.
  • Big Data Engineer Role: Required proficiency in software development and infrastructure with a focus on managing large data clusters and delivering data at scale.
  • Big Data's Popularity and Challenges: Became a buzzword, leading to misuse for small data problems and significant administrative overhead for maintaining big data tools.
  • Simplification and Accessibility: Efforts to abstract, simplify, and make big data more accessible reduced the need for extensive administrative tasks, leading to the integration of big data engineering into general data engineering practices.

2000年代および2010年代:ビッグデータエンジニアリング

  • Hadoopエコシステム: Hadoopエコシステム内のオープンソースビッグデータツールが成熟し、世界中のビジネスが先進的なデータツールを利用できるようになりました。
  • リアルタイムデータへの移行: バッチ処理からイベントストリーミングへの大きなシフトがあり、ビッグ"リアルタイム"データの時代が紹介されました。
  • 新技術の出現: HadoopApache Pig、Hive、Dremel、HBase、Storm、Cassandra、Spark、Prestoなどのツールがデータエンジニアリングを革命し、従来のGUIベースのツールからコードファーストのエンジニアリングへと移行しました。
  • ビッグデータエンジニアの役割: ソフトウェア開発とインフラストラクチャに熟練し、大規模なデータクラスターの管理とスケールでのデータ提供に焦点を当てる必要がありました。
  • ビッグデータの人気と課題: バズワードとなり、小規模なデータ問題にビッグデータツールを誤用することが一般的になり、ビッグデータツールの維持管理に膨大な管理作業が必要になりました。
  • 簡素化とアクセシビリティ: ビッグデータをより簡単に、そして高い管理負担やコストなしで利用できるようにするための抽象化、簡素化の取り組みにより、広範な管理作業の必要性が減少し、ビッグデータエンジニアリングが一般的なデータエンジニアリングの実践に統合されました。

  • Evolving Role of Data Engineers: The data engineering role is rapidly evolving from focusing on monolithic frameworks like Hadoop, Spark, or Informatica to decentralized, modularized, and highly abstracted tools.

  • Growth in Data Tools: An astonishing proliferation of data tools has occurred, including the modern data stack, which simplifies analysts' work through a collection of open-source and third-party products.
  • Shift to Data Lifecycle Engineering: Data engineers are transitioning to data lifecycle engineers, focusing on higher-level tasks such as security, data management, DataOps, data architecture, orchestration, and overall lifecycle management.
  • Changing Attitudes Towards Data Management: There's a noticeable shift towards managing and governing data, with an emphasis on privacy, compliance (e.g., CCPA, GDPR), and improving data quality, rather than simply handling large volumes of data.
  • Return to "Enterprisey" Focus: With many challenges of previous data systems resolved, there's a renewed focus on data management, quality, and governance, emphasizing decentralization and agility over traditional command-and-control approaches.
  • Golden Age of Data Lifecycle Management: This era is considered a golden age for data lifecycle management, with better tools and techniques available for data engineers than ever before.

Unordered List in English

  • Data engineering role evolving from monolithic frameworks to decentralized, modular, and abstract tools.
  • Significant proliferation of data tools, including modern data stacks for easier analysis.
  • Transition of data engineers to lifecycle engineers focusing on higher-level tasks.
  • Shift in focus towards data management, governance, privacy, and quality improvement.
  • Renewed emphasis on "enterprisey" data management with a focus on decentralization and agility.
  • Considered a golden age for data lifecycle management with advanced tools and techniques.

Japanese Translation

  • データエンジニアリングの役割は、Hadoop、Spark、Informaticaのようなモノリシックフレームワークから、分散型、モジュール式、抽象化されたツールへと急速に進化しています。
  • データツールの顕著な増加があり、アナリストの作業を簡素化するオープンソースおよびサードパーティ製品のコレクションである現代のデータスタックを含みます。
  • データエンジニアは、セキュリティ、データ管理、DataOps、データアーキテクチャオーケストレーション、および全体的なライフサイクル管理など、より高レベルのタスクに焦点を当てるデータライフサイクルエンジニアへと移行しています。
  • データ管理、ガバナンス、プライバシー、品質改善に重点を置く方向への明確なシフトがあります。
  • 多くのデータシステムの課題が解決された今、データ管理、品質、ガバナンスに再び焦点を当て、従来のコマンドアンドコントロールアプローチに代わる分散化とアジリティに重点を置いています。
  • これはデータライフサイクル管理の黄金時代と見なされ、データエンジニアにとってこれまでにない優れたツールと技術が利用可能です。

Data Engineering and Data Science

  • Distinct Disciplines: Data engineering and data science are separate but complementary fields. Data engineering provides the necessary input for data science activities.
  • Position in Workflow: Data engineering is upstream, preparing and supplying data for data scientists who then apply analysis and machine learning downstream.
  • Data Science Hierarchy of Needs: Introduced by Monica Rogati in 2017, it emphasizes the foundational importance of data collection, movement/storage, and processing before advancing to analytics and machine learning.
  • Reality of Data Science Work: Data scientists spend an estimated 70% to 80% of their time on data preparation tasks, with only a small portion dedicated to actual analysis and machine learning.
  • Need for Solid Data Foundation: Before focusing on AI and ML, a robust data foundation is crucial, which is often built by data engineers.
  • Role of Data Engineers: They ensure the reliability and availability of data, enabling data scientists to focus more on analytics, experimentation, and ML.
  • Importance and Visibility: Data engineering is equally important as data science, playing a critical role in the success of data science in production environments.

データエンジニアリングとデータサイエンス

  • 異なる分野: データエンジニアリングとデータサイエンスは別々だが、相補的な分野です。データエンジニアリングはデータサイエンスの活動に必要な入力を提供します。
  • ワークフロー内の位置: データエンジニアリングは上流に位置し、データサイエンティストが下流で分析や機械学習を適用するためのデータを準備して提供します。
  • データサイエンスの階層構造の必要性: 2017年にモニカ・ロガティによって紹介され、分析と機械学習に進む前にデータ収集、移動/ストレージ、および処理の基礎的な重要性を強調しています。
  • データサイエンス作業の現実: データサイエンティストは、データ準備タスクに推定で70%から80%の時間を費やし、実際の分析と機械学習にはごくわずかな時間しか割かれません。
  • 堅固なデータ基盤の必要性: AIとMLに焦点を当てる前に、しっかりとしたデータ基盤が重要であり、これはしばしばデータエンジニアによって構築されます。
  • データエンジニアの役割: データの信頼性と可用性を確保し、データサイエンティストが分析、実験、およびMLにより多くの時間を集中できるようにします。
  • 重要性と可視性: データエンジニアリングはデータサイエンスと同じくらい重要であり、本番環境でのデータサイエンスの成功において重要な役割を果たします。

Data Engineering Skills and Activities

  • Core Skill Set: Involves security, data management, DataOps, data architecture, and software engineering, covering the "undercurrents" of data engineering.
  • Tool Evaluation and Integration: Understanding how to evaluate data tools and integrate them across the data engineering lifecycle.
  • Data Flow Knowledge: Knowing how data is produced in source systems and how it's consumed and valued by analysts and data scientists after processing and curating.
  • Optimization Responsibilities: Balancing cost, agility, scalability, simplicity, reuse, and interoperability while managing complex systems.
  • Evolution of Tools: Transition from using a few powerful technologies to modern, less complicated tools that abstract and simplify workflows.
  • Focus Shift: Now emphasizing the use of simple, cost-effective, best-of-breed services and creating agile data architectures that adapt to new trends.
  • Non-Responsibilities: Data engineers typically do not build ML models, create reports/dashboards, perform data analysis, build KPIs, or develop software applications but should understand these areas.

データエンジニアリングのスキルと活動

  • コアスキルセット: セキュリティ、データ管理、DataOps、データアーキテクチャ、ソフトウェアエンジニアリングを含み、データエンジニアリングの「基本概念」をカバーします。
  • ツールの評価と統合: データツールを評価し、それらをデータエンジニアリングのライフサイクル全体で統合する方法を理解します。
  • データフローの知識: ソースシステムでデータがどのように生成され、処理およびキュレーション後にアナリストやデータサイエンティストによってどのように消費され、価値を生み出されるかを知ること。
  • 最適化の責任: 複雑なシステムを管理しながら、コスト、俊敏性、スケーラビリティ、シンプルさ、再利用、相互運用性のバランスを取ります。
  • ツールの進化: 数少ない強力な技術の使用から、ワークフローを抽象化し簡素化する現代のより単純なツールへの移行。
  • 焦点のシフト: シンプルでコスト効率の良い、最良のサービスの利用と、新しいトレンドに適応するアジャイルなデータアーキテクチャの作成に注力。
  • 非責任範囲: データエンジニアは通常、MLモデルを直接構築したり、レポートやダッシュボードを作成したり、データ分析を行ったり、KPIを構築したり、ソフトウェアアプリケーションを開発したりしませんが、これらの領域を理解するべきです。

English Summary

  • Data Maturity Concept: Data maturity refers to the progression of an organization towards higher data utilization, capabilities, and integration. It's not determined by the company's age or revenue but by how data is used as a competitive advantage.
  • Importance for Data Engineers: The level of data maturity within a company significantly affects a data engineer's responsibilities and career progression.
  • Simplified Data Maturity Model: A proposed model has three stages: starting with data, scaling with data, and leading with data. These stages outline the evolution of data usage within a company and the role of a data engineer at each stage.

Unordered List in English

  • Data maturity is the advancement towards better data utilization and integration in an organization.
  • It impacts a data engineer's job responsibilities and career growth.
  • The simplified data maturity model includes three stages: starting with data, scaling with data, and leading with data.

Japanese Translation

  • データ成熟度は、組織がより高いデータ利用、能力、および統合に向かって進むことを指します。
  • これはデータエンジニアの職務責任とキャリアの進歩に大きな影響を与えます。
  • 簡素化されたデータ成熟度モデルには、データを使い始める、データでスケールする、データでリードするの3つの段階が含まれます。

Stage 1: Starting with Data

  • Early Data Maturity: Companies at this stage often have undefined goals, with data architecture and infrastructure still in planning.
  • Small Data Team: Typically consists of a few individuals, with data engineers acting as generalists and possibly fulfilling roles in data science or software engineering.
  • Initial Goals: Aim to move quickly, gain traction, and deliver value, avoiding premature deep dives into machine learning due to the lack of a solid data foundation.
  • Key Activities for Data Engineers:
    • Secure buy-in from key stakeholders and executive management.
    • Define the data architecture, often solo, to support business goals.
    • Audit and identify data that supports key initiatives within the designed architecture.
    • Establish a solid data foundation for future analytics and model generation.

Tips for Stage 1:

  • Seek Quick Wins: To demonstrate the value of data initiatives, be mindful of the technical debt these may incur.
  • Engage with Stakeholders: Avoid working in silos by communicating with people outside the data team to gain insights and feedback.
  • Simplify: Use off-the-shelf solutions to avoid unnecessary technical complexity.
  • Custom Solutions: Develop bespoke systems only when it provides a competitive edge.

ステージ1: データを始める

  • 初期のデータ成熟度: この段階の企業はしばしば未定義の目標を持ち、データアーキテクチャとインフラは計画中です。
  • 小規模なデータチーム: 数人からなることが多く、データエンジニアは一般的にジェネラリストとして活動し、データサイエンスやソフトウェアエンジニアリングの役割も担うことがあります。
  • 初期目標: 素早く動き、足場を固め、価値を提供することを目指します。確固たるデータ基盤がない状態での機械学習への早急な深入りは避けるべきです。
  • データエンジニアの主な活動:
    • 主要なステークホルダーや経営陣からの支持を確保する。
    • ビジネス目標を支援するデータアーキテクチャを定義する(通常は単独で行う)。
    • 設計したアーキテクチャ内で主要なイニシアティブをサポートするデータを監査・特定する。
    • 将来の分析とモデル生成のための確かなデータ基盤を構築する。

ステージ1のヒント:

  • クイックウィンを求める: データイニシアティブの価値を示すためには、これによって発生する可能性のある技術的負債を念頭に置く。
  • ステークホルダーとの対話: データチーム外の人々とのコミュニケーションを通じて洞察とフィードバックを得ることで、孤立した作業を避ける。
  • 簡素化する: 不必要な技術的複雑さを避けるため、可能な限り既製のターンキーソリューションを使用する。
  • カスタムソリューション: 競争上の優位性を提供する場合のみ、特注のシステムやコードを開発する。

English Summary

  • Stage 2: Scaling with Data: Companies at this stage have evolved from ad hoc data requests to formal data practices, focusing on creating scalable and robust data architectures. The role of data engineers shifts from generalists to specialists, with a focus on specific areas of the data engineering lifecycle. Key goals include establishing formal data practices, creating scalable architectures, adopting DevOps and DataOps, building ML-supportive systems, and focusing on customization for competitive advantage. Challenges include resisting the temptation to adopt new technologies for the sake of trendiness, focusing on solutions that simplify deployment and management, and transitioning from a technologist mindset to pragmatic leadership.

Unordered List in English

  • Transition from ad hoc data requests to formal data practices.
  • Focus on creating scalable and robust data architectures.
  • Shift from generalist to specialist roles in data engineering.
  • Adopt DevOps and DataOps practices.
  • Build systems that support machine learning.
  • Customize only for competitive advantage.
  • Challenges include avoiding trendy technologies without clear value, focusing on simple-to-manage solutions, and shifting towards pragmatic leadership.

Japanese Translation

  • アドホックなデータ要求から正式なデータプラクティスへの移行。
  • スケーラブルで堅牢なデータアーキテクチャの作成に焦点を当てる。
  • データエンジニアリングの役割を、一般的なものから特定の分野に特化した専門家へとシフト。
  • DevOpsおよびDataOpsプラクティスを採用。
  • 機械学習をサポートするシステムの構築。
  • 競争上の利点がある場合のみカスタマイズに焦点を当てる。
  • 課題には、トレンドのためだけに新技術を採用する誘惑を避ける、デプロイと管理を簡素化するソリューションに焦点を当てる、技術者としてではなく実用的なリーダーシップへのシフトが含まれる。

Stage 3: Leading with Data

  • Data-Driven Company: The organization operates on automated pipelines and systems for self-service analytics and ML, introduced by data engineers.
  • Seamless Integration: New data sources are easily integrated, ensuring tangible value from data utilization.
  • Specialization of Roles: Data engineering roles become more specialized, focusing on advanced aspects of data management and operations.
  • Key Activities for Data Engineers:
    • Develop automation for easy integration and use of new data sources.
    • Build custom tools and systems that use data to create a competitive edge.
    • Concentrate on enterprise aspects of data, including governance, quality, and DataOps.
    • Implement tools for broad data access within the company, such as data catalogs, lineage tools, and metadata management systems.
    • Foster collaboration with software engineers, ML engineers, analysts, and other stakeholders.
    • Establish a community for open collaboration across roles and positions.

Challenges at Stage 3:

  • Avoiding Complacency: Continuous focus on maintenance and improvement is vital to prevent regression.
  • Managing Technology Distractions: The risk of engaging in expensive, non-value-adding technology projects is higher. Focus on technology that delivers a competitive advantage.

ステージ3: データをリードする

  • データ駆動型企業: 自動化されたパイプラインとシステムを通じて、企業内の人々がセルフサービス型の分析とMLを行えるようになります。
  • シームレスな統合: 新しいデータソースの導入が容易で、データ利用からの具体的な価値を確保します。
  • 役割の専門化: データエンジニアリングの役割はより深く専門化し、データ管理と運用の高度な側面に焦点を当てます。
  • データエンジニアの主な活動:
    • 新しいデータソースの簡単な統合と使用のための自動化を開発する。
    • データを活用して競争上の優位性を生み出すカスタムツールとシステムを構築する。
    • データガバナンス、品質、DataOpsを含むデータのエンタープライズ側面に集中する。
    • データカタログ、データ系譜ツール、メタデータ管理システムなど、企業内での広範なデータアクセスを可能にするツールを実装する。
    • ソフトウェアエンジニア、MLエンジニア、アナリストなどのステークホルダーと効率的に協力する。
    • 役割や地位に関係なく、人々が協力し、オープンに話し合えるコミュニティと環境を作る。

ステージ3の課題:

  • 満足感の回避: 維持と改善に継続的に焦点を当てることが、後退を防ぐために重要です。
  • 技術的な誘惑の管理: 高価でビジネスに価値をもたらさないプロジェクトに関わるリスクが高まります。競争上の優位性をもたらす技術に焦点を当てることが重要です。

Business Responsibilities

  • Effective Communication: Essential for establishing rapport and trust with both technical and nontechnical people across the organization. Paying attention to organizational dynamics and silos is critical for success.
  • Scoping and Requirements Gathering: Understand what needs to be built and ensure alignment with stakeholders. Assess how data and technology decisions impact the business.
  • Cultural Foundations of Agile, DevOps, and DataOps: Recognize these as fundamentally cultural practices requiring organizational buy-in, not just technological solutions.
  • Cost Control: Success involves keeping costs low while delivering significant value. Optimize for time to value, total cost of ownership, and opportunity cost, and monitor costs to prevent surprises.
  • Continuous Learning: Stay updated with rapid changes in the data field, discern relevant developments, and continuously enhance both new and fundamental knowledge.

ビジネス責任

  • 効果的なコミュニケーション: 組織内の技術的および非技術的な人々との信頼関係と良好な関係を確立することが不可欠です。組織のダイナミクスとサイロに注意を払うことが成功には重要です。
  • スコープと要件収集: 何を構築する必要があるかを理解し、ステークホルダーとの合意を確保すること。データと技術の決定がビジネスにどのような影響を与えるかを評価すること。
  • アジャイル、DevOps、DataOpsの文化的基盤: これらを技術的な解決策ではなく、組織全体の賛同が必要な根本的に文化的な実践として認識すること。
  • コスト管理: コストを低く抑えながら大きな価値を提供することが成功につながります。価値到達時間、総所有コスト、機会コストを最適化し、予期せぬコストを避けるためにコストを監視すること。
  • 継続的な学習: データ分野の急速な変化に対応し、関連する開発を識別し、新しい知識と基本的な知識を継続的に強化すること。フィールドの最新情報を得て、どのように学習するかを学ぶこと。

成功するデータエンジニアは常に大局を理解し、ビジネスに対して大きな価値をもたらす方法を考えます。コミュニケーションは、技術的および非技術的な人々の両方にとって重要です。データチームの成功は、他のステークホルダーとのコミュニケーションに基づくことが多く、成功または失敗は技術の問題では稀です。組織をナビゲートする方法を知り、要件を収集し、コストを管理し、継続的に学習することは、技術能力のみに依存するデータエンジニアとは一線を画すでしょう。

Technical Responsibilities

  • Optimize Architectures: Understand how to build architectures that balance performance and cost, using both prepackaged and custom components.
  • Data Engineering Lifecycle Stages: Familiarity with generation, storage, ingestion, transformation, and serving stages.
  • Lifecycle Undercurrents: Knowledge of security, data management, DataOps, data architecture, orchestration, and software engineering.
  • Coding Skills: Production-grade software engineering skills are essential for data engineers, who should be adept at coding in SQL, Python, a JVM language (Java or Scala), and bash.
  • Managed Services: Leverage fully managed services and SaaS offerings to reduce low-level programming efforts, focusing instead on high-level abstractions and pipeline coding within orchestration frameworks.
  • Software Engineering Best Practices: Maintain a competitive edge by understanding deep architectural codebase details, particularly for specific technical needs.

Essential Programming Languages:

  • SQL: Fundamental for data manipulation and querying.
  • Python: Serves as a bridge between data engineering and data science, underpinning popular data tools and serving as a flexible API language.
  • JVM Languages (Java/Scala): Important for working with Apache open source projects and accessing lower-level features.
  • bash: Crucial for scripting, performing OS operations, and improving workflow efficiency through command-line interface expertise.

テクニカル責任

  • アーキテクチャの最適化: パフォーマンスとコストのバランスを取りながら、パッケージ化されたコンポーネントやカスタムコンポーネントを使用してアーキテクチャを構築する方法を理解する。
  • データエンジニアリングライフサイクルの段階: 生成、保存、取り込み、変換、提供の各段階に精通していること。
  • ライフサイクルの基本概念: セキュリティ、データ管理、DataOps、データアーキテクチャオーケストレーション、ソフトウェアエンジニアリングの知識。
  • コーディングスキル: データエンジニアには、SQLPythonJVM言語(JavaまたはScala)、bashでのコーディングが得意であることが不可欠。
  • マネージドサービス: 低レベルのプログラミング労力を削減するために、完全にマネージドされたサービスとSaaSオファリングを活用し、代わりにオーケストレーションフレームワーク内での高レベルの抽象化とパイプラインコーディングに焦点を当てる。
  • ソフトウェアエンジニアリングのベストプラクティス: 特定の技術的ニーズに対して、コードベースの深いアーキテクチャの詳細を理解することで競争上の優位性を維持する。

必須プログラミング言語:

The Unreasonable Effectiveness of SQL

  • Revival of SQL: Despite being considered outdated with the advent of MapReduce and big data, SQL has regained its importance in data engineering, thanks to tools like Spark SQL, Google BigQuery, Snowflake, Hive, and support in streaming frameworks like Apache Flink, Beam, and Kafka.
  • SQL Proficiency: Competent data engineers should have high proficiency in SQL to solve complex analytics and data transformation problems efficiently.
  • SQL and Productivity: Embrace tools that offer simplicity and enhance productivity. Expertise in SQL, including modern semantics for JSON parsing and nested data, is crucial.
  • Beyond SQL: Recognize when SQL is not the best tool and be able to choose and use suitable alternatives, like native Spark for specific tasks.
  • Secondary Languages: Develop skills in secondary programming languages (R, JavaScript, Go, Rust, C/C++, C#, Julia) as necessary for company-specific tools or domains.
  • Staying Current: Focus on fundamentals while paying attention to new developments. Understand how new technologies fit into the data engineering lifecycle.

SQLの非合理的な有効性

  • SQLの復活: MapReduceビッグデータの登場で時代遅れと見なされていたSQLは、Spark SQLGoogle BigQuery、Snowflake、Hiveのようなツールや、Apache Flink、Beam、Kafkaなどのストリーミングフレームワークのサポートにより、データエンジニアリングでの重要性を取り戻しました。
  • SQLの習熟度: 複雑な分析とデータ変換問題を効率的に解決するため、有能なデータエンジニアはSQLに高い習熟度を持つべきです。
  • SQLと生産性: 単純さと生産性を高めるツールを積極的に活用すること。JSONの解析やネストされたデータのための現代的なSQLセマンティクスに精通することが重要です。
  • SQLを超えて: SQLが最適なツールでない場合を認識し、適切な代替手段を選択し使用できるようになることが重要です。特定のタスクにはネイティブSparkのような選択肢が適している場合があります。
  • 補助言語: 会社固有のツールやドメインに必要な場合、R、JavaScript、Go、Rust、C/C++C#、Juliaなどの補助プログラミング言語のスキルを開発すること。
  • 最新の動向に追いつく: 基本に焦点を当てつつ、新しい開発に注意を払うこと。新しい技術がデータエンジニアリングライフサイクルにどのように役立つかを理解すること。

The Continuum of Data Engineering Roles, from A to B

  • Variety in Roles and Skills: Data engineers possess diverse skill sets and engage in different types of work, influenced by a company's data maturity.
  • Type A Data Engineers:
    • Abstraction Focus: Aim to keep data architecture simple and abstract, leveraging off-the-shelf products, managed services, and tools to manage the data engineering lifecycle.
    • Industry-Wide Application: Found across various industries and at all levels of data maturity.
  • Type B Data Engineers:
    • Build Focus: Specialize in creating scalable data tools and systems that enhance a company’s core competencies and competitive edge.
    • Associated with Higher Data Maturity: More common in companies at stage 2 and 3 of data maturity or with unique and critical initial data use cases requiring custom tools.

データエンジニアリングの役割の連続体、AからBへ

  • 役割とスキルの多様性: データエンジニアは様々なスキルセットを持ち、企業のデータ成熟度に影響される異なるタイプの仕事に従事します。
  • タイプAデータエンジニア:
    • 抽象化に焦点: データアーキテクチャを可能な限りシンプルかつ抽象的に保ち、市販の製品、マネージドサービス、ツールを使用してデータエンジニアリングライフサイクルを管理することを目指す。
    • 業界全体での応用: 様々な業界およびデータ成熟度の全レベルで見られる。
  • タイプBデータエンジニア:
    • 構築に焦点: 企業の核となる能力と競争上の優位性を強化するスケーラブルなデータツールとシステムを構築することに特化。
    • 高いデータ成熟度と関連: データ成熟度のステージ2および3(スケーリングおよびデータリーディング)の企業や、カスタムデータツールが必要な独特でミッションクリティカルな初期データユースケースでより一般的。

タイプAとタイプBのデータエンジニアは同じ会社で働くこともあり、同一人物であることもあります!一般的には、基盤を築くために最初にタイプAのデータエンジニアが雇用され、企業内のニーズが生じるにつれてタイプBのデータエンジニアのスキルセットが学ばれたり雇われたりします。

Internal-Facing vs. External-Facing Data Engineers

  • Broad Interactions: Data engineers work with both technical and non-technical individuals, handling diverse tasks that vary in focus (internal and external).
  • External-Facing Data Engineers:
    • User-Oriented: Align with users of external applications (social media, IoT devices, e-commerce).
    • System Development: Architect, build, and manage systems for collecting, storing, and processing data.
    • Feedback Loop: Systems have a feedback loop from the application to the data pipeline and back.
  • Challenges for External-Facing:
    • Concurrency and Limits: Manage higher concurrency loads and set query limits to minimize infrastructure impact.
    • Security: Address complex security issues, especially with multitenant data.
  • Internal-Facing Data Engineers:
    • Business-Oriented: Focus on the business's internal needs and stakeholders.
    • Data Management: Create and maintain data pipelines and warehouses for BI dashboards, reports, business processes, data science, and ML models.
  • Blended Responsibilities: Data engineers often handle a mix of internal and external tasks, with internal data management serving as a foundation for external applications.

組織内でのデータエンジニア: 内部向け vs 外部向け

  • 幅広い対話: データエンジニアは技術的、非技術的な人々と協力し、内部および外部に焦点を当てた多様なタスクを処理します。
  • 外部向けデータエンジニア:
  • 外部向けの課題:
    • 並行処理と制限: 高い並行負荷を管理し、インフラへの影響を最小限に抑えるためにクエリの制限を設定する。
    • セキュリティ: 特に多テナントデータの場合、複雑で敏感なセキュリティ問題に対処する。
  • 内部向けデータエンジニア:
    • ビジネス指向: 企業の内部ニーズとステークホルダーに焦点を当てる。
    • データ管理: BIダッシュボード、レポート、ビジネスプロセス、データサイエンス、MLモデルのためのデータパイプラインとデータウェアハウスを作成・維持する。
  • 混合した責任: データエンジニアはしばしば内部および外部のタスクの混合を扱い、内部データ管理は外部アプリケーションの基盤として機能します。

Data Engineers and Other Technical Roles

  • Broad Collaboration: Data engineers interact with a wide range of technical and non-technical roles within an organization, serving as a crucial nexus between data producers and consumers.

  • Key Technical Stakeholders:

    • Data Architects: Design organizational data management blueprints, bridging technical and non-technical sides.
    • Software Engineers: Generate internal data through software and systems development.
    • DevOps Engineers and SREs: Produce operational monitoring data, often upstream but can also be downstream consumers.
    • Data Scientists: Build predictive models and rely on data engineers for data preparation and automation.
    • Data Analysts: Focus on understanding business performance, running queries, and relying on data engineers for pipeline development.
    • ML Engineers and AI Researchers: Develop and maintain ML infrastructure and advanced techniques, overlapping with data engineering and science roles.

データエンジニアと他の技術的役割

  • 幅広い協力: データエンジニアは、組織内の多様な技術的、非技術的な役割と相互作用し、データ生産者と消費者の間の重要な連結点として機能します。

  • 主要な技術的ステークホルダー:

    • データアーキテクト: 組織のデータ管理の設計図を作成し、技術的および非技術的な側面を繋ぐ。
    • ソフトウェアエンジニア: ソフトウェアとシステムの開発を通じて内部データを生成。
    • DevOpsエンジニアおよびSRE: 運用監視データを生産し、主に上流に位置するが、下流の消費者でもあり得る。
    • データサイエンティスト: 予測モデルを構築し、データ準備と自動化についてデータエンジニアに依存。
    • データアナリスト: ビジネスのパフォーマンスを理解し、クエリを実行し、データパイプラインの開発にデータエンジニアを頼る。
    • MLエンジニアおよびAI研究者: MLインフラと先進技術の開発と維持を行い、データエンジニアリングおよびサイエンスの役割と重なる。

Data Engineers and Business Leadership

  • Organizational Connectors: Data engineers act as connectors within organizations, often operating in a non-technical capacity and participating in strategic planning.

  • Data in the C-suite:

    • CEOs: Focus on data and analytics initiatives, relying on data engineers to provide insights into possibilities with data.
    • CIOs: Direct IT organization and collaborate with data engineering on data culture and major initiatives.
    • CTOs: Lead technological strategy for external-facing applications, key data sources for data engineers.
    • CDOs: Manage company’s data assets and strategy, overseeing data products, privacy, and occasionally data engineering.
    • CAOs: Focus on analytics and decision-making, potentially overseeing data science and ML.
    • Chief Algorithms Officer (CAO-2): Highly technical role focused on data science and ML, setting R&D agendas.
  • Data Engineers and Project Managers:

    • Work on large initiatives like cloud migrations and new data architectures.
    • Collaborate with project managers to plan sprints and manage project deliverables.
  • Data Engineers and Product Managers:

    • Interact with product managers in developing data products.
    • Balance technology team activities with customer and business needs.

ビジネスリーダーシップとデータエンジニア

  • 組織のコネクター: データエンジニアは組織内のコネクターとして機能し、戦略計画に参加し、非技術的な役割で活動することがよくあります。

  • Cスイート内のデータ:

    • CEO: データと分析のイニシアチブに焦点を当て、データエンジニアにデータの可能性に関する洞察を提供するよう依頼。
    • CIO: IT組織を指揮し、データエンジニアリングと共にデータカルチャーと主要イニシアチブに協力。
    • CTO: 外向きのアプリケーションの技術戦略を主導し、データエンジニアにとって重要なデータソースを提供。
    • CDO: 企業のデータ資産と戦略を管理し、データプロダクト、プライバシーを監督し、場合によってはデータエンジニアリングを担当。
    • CAO: 分析と意思決定に焦点を当て、データサイエンスとMLを監督する可能性がある。
    • チーフアルゴリズムオフィサー (CAO-2): データサイエンスとMLに特化した高度に技術的な役割で、R&Dアジェンダを設定。
  • データエンジニアとプロジェクトマネージャー:

    • クラウド移行や新しいデータアーキテクチャなどの大規模なイニシアチブに取り組む。
    • プロジェクトマネージャーと協力してスプリントを計画し、プロジェクトの成果物を管理。
  • データエンジニアとプロダクトマネージャー:

    • データプロダクトの開発においてプロダクトマネージャーと相互作用する。
    • 技術チームの活動と顧客およびビジネスのニーズとのバランスを取る。

Conclusion

  • Defining Data Engineering: Explained what data engineering entails and the roles of data engineers.
  • Data Maturity in Companies: Described the concept of data maturity within organizations.
  • Type A and Type B Data Engineers: Introduced the distinction between two types of data engineers.
  • Collaboration: Outlined whom data engineers collaborate with across various roles.

結論

  • データエンジニアリングの定義: データエンジニアリングが何を含むのか、データエンジニアの役割について説明しました。
  • 企業のデータ成熟度: 組織内のデータ成熟度の概念について述べました。
  • タイプAとタイプBのデータエンジニア: 2種類のデータエンジニアの区別を紹介しました。
  • 協力関係: データエンジニアがさまざまな役割とどのように協力するかについて概説しました。

この第1章は、ソフトウェア開発者、データサイエンティスト、MLエンジニア、ビジネスステークホルダー、起業家、ベンチャーキャピタリストなど、あなたがどのような立場であっても、データエンジニアリングの風景についての簡潔な概要を提供しました。もちろん、後続の章で明らかにするべきことはまだたくさんあります。第2章ではデータエンジニアリングのライフサイクルについて、第3章ではアーキテクチャについて扱います。続く章では、ライフサイクルの各部分に対する技術的決定の詳細に入ります。データ分野は常に変動しており、可能な限り各章は変わらない視点――絶え間ない変化の中で多年にわたって有効である視点に焦点を当てます。

7章:Generative AI for Beginners講座( by Microsoft)まとめ

概要

  • 生成 AI アプリケーションの開発を始めるために必要な全知識を学べる 12 講座
  • マイクロソフトクラウド・アドボケイトが提供
  • 生成 AI アプリケーション構築の基礎知識を習得

URL

Generative AI for Beginners
https://microsoft.github.io/generative-ai-for-beginners/#/translations/ja-jp/

GitHub

microsoft/generative-ai-for-beginners: 12 Lessons, Get Started Building with Generative AI 🔗 https://microsoft.github.io/generative-ai-for-beginners/

目次

No. レッスンへのリンク 学ぶ内容の概念 学習目標
0 このコースを始めるための準備 テクノロジーのセットアップとコースの枠組み レッスンが成功したと分かるゴール設定
1 生成 AI と大規模言語モデルの紹介 概念: 生成 AI と現在のテクノロジー環境 生成 AI とは何か、そして大規模言語モデル(LLM)がどのように動くかを理解する。
2 様々なLLMの調査と比較 概念: さまざまな大規模言語モデルのテスト、反復、および比較 ユースケースに適した AI モデルを選択
3 責任ある生成 AI の利用 概念: ファウンデーションモデルの限界と AI に伴うリスクを理解する 責任ある生成 AI アプリケーションの開発方法を学ぶ
4 プロンプト・エンジニアリングの基礎 Code/概念: ハンズオン形式でプロンプト・エンジニアリングのベストプラクティスを学ぶ 出力結果を改善するため、プロンプト・エンジニアリングのテクニックを取り入れる
5 高度なプロンプトの作成 Code/概念: プロンプトに様々なテクニックを取り入れ、プロンプト・エンジニアリングの知識をより深める 出力結果を改善するため、プロンプト・エンジニアリングのテクニックを取り入れる
6 テキスト生成アプリケーションの構築 Code: コード:Azure OpenAI を使用してテキスト生成アプリを構築する トークンと温度を効率的に使用しモデルの出力を変化させる方法を理解する
7 チャットアプリケーションの構築 Code: チャット アプリケーションを効率的に構築および統合するための手法。 AI を利用したチャット・アプリケーションの品質を効果的に監視し維持するための重要なキーメトリクスと注意点を把握する
8 Vector Databases を利用した検索アプリケーションの構築 Code: セマンティック検索とキーワード検索の違いについて学ぶ。テキストの埋め込みについて学び、検索への適用方法を理解する 埋め込み技術を利用したデータ検索アプリケーションを構築する
9 画像生成アプリケーションの構築 Code: アプリケーション開発で画像生成が役立つ理由 画像を生成するアプリケーションを構築する
10 ローコード AI アプリケーションの構築 Low Code: Power Platform における生成 AI の概要 教育系スタートアップ企業がローコードで学生の課題追跡アプリを構築する
11 Function Calling との統合 Code: Function Calling とアプリケーションにおける用途 外部 API からデータを取得するため Function Calling を設定する
12 AI アプリケーション用の UX デザイン 概念: 透明性と信頼性を備えたAIアプリケーションの設計 生成 AI アプリケーションの開発時に UX デザインの原則を適用する
xx 学習の継続 各授業の内容をさらに進めるための参考リンク! 生成 AI の技術をマスターするために

7.チャットアプリケーションの構築

www.youtube.com

https://microsoft.github.io/generative-ai-for-beginners/#/07-building-chat-applications/translations/ja-jp/README?wt.mc_id=academic-105485-yoterada

  • 学ぶ内容の概念: Code: チャット アプリケーションを効率的に構築および統合するための手法。
  • 学習目標: AI を利用したチャット・アプリケーションの品質を効果的に監視し維持するための重要なキーメトリクスと注意点を把握する

ビデオの要約 by YouTube Summary with ChatGPT & Claude

  • in English

This video, titled "07 - Building Chat Applications with Generative AI" on YouTube, presented by Jasmine Greenaway, focuses on the intricacies of developing chat applications enhanced by generative AI. It starts by differentiating between traditional chatbots, which operate on predefined scripts, and generative AI-powered chat applications that can generate contextually relevant responses in real-time. Greenaway emphasizes not just the intelligence of chat applications but also their performance and user experience.

Key points covered include:

  1. Differences between Chatbots and Generative AI Chat Applications: Chatbots are limited to scripted responses, while generative AI chat applications can provide dynamic, context-aware answers.

  2. Building and Integrating Chat Applications: The process begins with leveraging APIs and SDKs to utilize existing functionalities, thereby speeding up development and focusing on unique application aspects.

  3. Enhancing User Experience (UX): Importance is placed on general UX principles and additional considerations unique to chat applications, such as maintaining context, personalization, and accessibility for users with visual, auditory, motor, or cognitive impairments.

  4. Fine-Tuning for Customization: Fine-tuning pre-trained models with domain-specific data is discussed, using Azure Open AI as an example to demonstrate how selecting a base model, training data, and hyperparameters can customize the application to meet specific needs.

  5. Performance and Metrics: The significance of tracking performance metrics like response time, user satisfaction, precision, recall, and detecting anomalies to ensure the application meets the best standards.

  6. Responsible AI Use: Greenaway concludes with a note on the importance of using AI responsibly, adhering to principles that ensure trust, inclusivity, and harm prevention, highlighting Microsoft’s approach to responsible AI development.

The presentation aims to provide a comprehensive overview for beginners on how to build effective and responsible chat applications using generative AI, stressing the balance between technical performance and ethical considerations.

  • in Japanese

このビデオ「07 - Building Chat Applications with Generative AI」では、Jasmine Greenawayが、生成AIを活用したチャットアプリケーションの開発について解説しています。伝統的なチャットボットが定義済みのスクリプトに基づいて動作するのに対し、生成AIを搭載したチャットアプリケーションは、リアルタイムで文脈に応じた回答を生成できる点が異なると強調しています。Greenawayは、チャットアプリケーションの賢さだけでなく、パフォーマンスとユーザーエクスペリエンスの重要性にも焦点を当てています。

主なポイントには以下のものが含まれます:

  1. チャットボットと生成AIチャットアプリケーションの違い:チャットボットはスクリプトに限定された回答をするのに対し、生成AIチャットアプリケーションは動的で文脈に応じた答えを提供できます。

  2. チャットアプリケーションの構築と統合APISDKを利用して既存の機能を活用することから始め、開発を加速し、アプリケーションの独自の側面に焦点を当てます。

  3. ユーザーエクスペリエンス(UX)の向上:一般的なUX原則の重要性と、コンテキストの維持、パーソナライゼーション、視覚、聴覚、運動、認知障害を持つユーザーのアクセシビリティなど、チャットアプリケーション独自の追加考慮事項に重点を置きます。

  4. カスタマイズのためのファインチューニングドメイン固有のデータで事前訓練されたモデルをファインチューニングすることが議論され、基本モデルの選択、訓練データ、ハイパーパラメータの選択を通じて、特定のニーズに合わせてアプリケーションをカスタマイズする方法を示しています。

  5. パフォーマンスとメトリック応答時間、ユーザー満足度、精度、リコール、異常の検出などのパフォーマンスメトリクスを追跡し、アプリケーションが最高の基準を満たしていることを確認する重要性。

  6. 責任あるAIの使用:AIを責任を持って使用する重要性について、ユーザーの信頼、包摂性、害の防止を確保し、間違いが発生した場合の改善と修正措置を提供することが強調され、Microsoftの責任あるAI開発に対するアプローチが紹介されます。

このプレゼンテーションは、技術的なパフォーマンスと倫理的な考慮のバランスを強調しながら、生成AIを使った効果的で責任あるチャットアプリケーションの構築について、初心者に包

括的な概観を提供することを目的としています。

コンテンツの要約 by ChatGPT

  • AIパワードチャットアプリケーションの開発に関する包括的なガイドを提供
  • 機能性、ユーザーエクスペリエンス、チャットサービスの品質を向上させるために生成AIを統合することに焦点を当てる
  • 効率的なチャットアプリケーションの構築と統合、特定のユースケースのカスタマイズ、責任あるAI実践に従って品質を監視・維持する重要性について説明
  • 従来のチャットボットとAIパワードチャットアプリケーションの違いを概説し、後者が生成AIモデルのおかげでオープンドメインの議論を行い、進化する会話の文脈に適応できる能力を強調
  • SDKAPIを利用してこれらのアプリケーションを構築する利点を議論し、スケーラビリティ、パフォーマンス、およびメンテナンスの容易さのためにプリビルト機能を使用する利点を強調
  • AIによって駆動されるチャットアプリケーション特有のユーザーエクスペリエンス(UX)に関する考慮事項について詳述し、あいまいさの取り扱い、コンテキスト保持、パーソナライゼーションのメカニズムを含む
  • ドメイン固有のアプリケーションのために、ドメイン固有の言語モデルDSL)の活用または一般的なAIモデルのファインチューニングを提案し、特殊な文脈内でより良く理解し、相互作用する
  • 高品質なチャットアプリケーションの基準を概説し、パフォーマンスとユーザー満足度を測定するための主要な指標と、マイクロソフトフレームワークに基づく責任あるAI実践の実装を含む
  • AIパワードチャットアプリケーションが公平で、包括的で、透明で、説明責任があることを確保

Tips

TODO 追記

6章:Generative AI for Beginners講座( by Microsoft)まとめ

概要

  • 生成 AI アプリケーションの開発を始めるために必要な全知識を学べる 12 講座
  • マイクロソフトクラウド・アドボケイトが提供
  • 生成 AI アプリケーション構築の基礎知識を習得

URL

Generative AI for Beginners
https://microsoft.github.io/generative-ai-for-beginners/#/translations/ja-jp/

GitHub

microsoft/generative-ai-for-beginners: 12 Lessons, Get Started Building with Generative AI 🔗 https://microsoft.github.io/generative-ai-for-beginners/

目次

No. レッスンへのリンク 学ぶ内容の概念 学習目標
0 このコースを始めるための準備 テクノロジーのセットアップとコースの枠組み レッスンが成功したと分かるゴール設定
1 生成 AI と大規模言語モデルの紹介 概念: 生成 AI と現在のテクノロジー環境 生成 AI とは何か、そして大規模言語モデル(LLM)がどのように動くかを理解する。
2 様々なLLMの調査と比較 概念: さまざまな大規模言語モデルのテスト、反復、および比較 ユースケースに適した AI モデルを選択
3 責任ある生成 AI の利用 概念: ファウンデーションモデルの限界と AI に伴うリスクを理解する 責任ある生成 AI アプリケーションの開発方法を学ぶ
4 プロンプト・エンジニアリングの基礎 Code/概念: ハンズオン形式でプロンプト・エンジニアリングのベストプラクティスを学ぶ 出力結果を改善するため、プロンプト・エンジニアリングのテクニックを取り入れる
5 高度なプロンプトの作成 Code/概念: プロンプトに様々なテクニックを取り入れ、プロンプト・エンジニアリングの知識をより深める 出力結果を改善するため、プロンプト・エンジニアリングのテクニックを取り入れる
6 テキスト生成アプリケーションの構築 Code: コード:Azure OpenAI を使用してテキスト生成アプリを構築する トークンと温度を効率的に使用しモデルの出力を変化させる方法を理解する
7 チャットアプリケーションの構築 Code: チャット アプリケーションを効率的に構築および統合するための手法。 AI を利用したチャット・アプリケーションの品質を効果的に監視し維持するための重要なキーメトリクスと注意点を把握する
8 Vector Databases を利用した検索アプリケーションの構築 Code: セマンティック検索とキーワード検索の違いについて学ぶ。テキストの埋め込みについて学び、検索への適用方法を理解する 埋め込み技術を利用したデータ検索アプリケーションを構築する
9 画像生成アプリケーションの構築 Code: アプリケーション開発で画像生成が役立つ理由 画像を生成するアプリケーションを構築する
10 ローコード AI アプリケーションの構築 Low Code: Power Platform における生成 AI の概要 教育系スタートアップ企業がローコードで学生の課題追跡アプリを構築する
11 Function Calling との統合 Code: Function Calling とアプリケーションにおける用途 外部 API からデータを取得するため Function Calling を設定する
12 AI アプリケーション用の UX デザイン 概念: 透明性と信頼性を備えたAIアプリケーションの設計 生成 AI アプリケーションの開発時に UX デザインの原則を適用する
xx 学習の継続 各授業の内容をさらに進めるための参考リンク! 生成 AI の技術をマスターするために

6.テキスト生成アプリケーションの構築

www.youtube.com

https://microsoft.github.io/generative-ai-for-beginners/#/06-text-generation-apps/translations/ja-jp/README?wt.mc_id=academic-105485-yoterada

  • 学ぶ内容の概念: Code: コード:Azure OpenAI を使用してテキスト生成アプリを構築する
  • 学習目標: トークンと温度を効率的に使用しモデルの出力を変化させる方法を理解する

ビデオの要約 by YouTube Summary with ChatGPT & Claude

  • 独自のテキスト生成アプリケーションの構築方法についてのレッスン。
  • 「初心者のための生成AI」カリキュラムの一部。
  • プレゼンターはマイクロソフトのクリス・ノーリング。
  • テキスト生成アプリケーションの説明と構築方法の学習。
  • OpenAIモデルまたはAzure上のOpenAIモデルを使用したアプリの構築。
  • アプリのトークン使用量の設定と温度設定によるレスポンス制御の学習。
  • テキスト入力からテキスト出力を生成するプロセスの紹介。
  • コマンドベースからグラフィカルなアプリケーションまで、様々なアプリケーション形態の説明。
  • プログラミング言語APIキー、ライブラリやフレームワークの選択。
  • 童話生成アプリケーションとレシピ提案アプリケーションのデモ。
  • 温度設定を使ったレスポンスのランダム性調整の実例紹介。

コンテンツの要約 by ChatGPT

基本的に以下の通り実施すれば、結果が得られる

Generative AI for Beginners

以下補足事項

使用するモデルのDeployment

あらかじめAzure OpenAI Studioにアクセスして、使用するモデルのDeploymentが必要

Azure OpenAI Studio

デプロイメントは、
コンテンツモデレーションモデル、
バージョン処理、デプロイメントサイズなど、
ニーズに合わせて設定された、
Azure OpenAIの基本モデル、
または微調整されたモデルへのエンドポイントを提供します。
このページから、
デプロイメントの表示、編集、新しいデプロイメントの作成ができます。
  • Deployment方法

  • Deploymentsメニューをクリック
  • Create new deploymentボタンをクリック
  • Deployment nameを決めて作成

  • Deploymentのコード記述方法

以下のように記述

deployment_name = "<デプロイ名>"
...
openai.Completion.create(engine= deployment_name, ...
...
  • Chat playgroundでチェックコードをコピーして動作確認

$ export OPENAI_API_KEY=
$ python check.py
エラーが出なければOK

API キーの機密情報をコードから分離するpython-dotenv

python-dotenv · PyPI

  • 準備

    • .envファイルを新規作成
    • 以下のようにkey=valueの形式で記述
OPENAI_API_KEY=...
  • 呼び出し
from dotenv import load_dotenv

# .envファイルのロード
load_dotenv()

# .envファイルのOPENAI_API_KEY値が設定される
openai.api_key = os.environ["OPENAI_API_KEY"]

max_tokens でトークン長指定

max_tokens = 100
completion = openai.Completion.create(model="davinci-002", prompt=prompt, max_tokens=max_tokens)

temperatureで温度指定(0..1)

temperature = 0.5 # 0..1
completion = openai.Completion.create(model="davinci-002", prompt=prompt, temperature=temperature)

課題をやってみる

  • まず、複数行のプロンプトテキストが記載されたファイルを読み込んで実行
$ cat prompt.txt

- "あなたは Python 言語のエキスパートです  
   
下記の形式で Python の初心者用レッスンを提案してください:  
   
形式:  
    - 概念:  
    - レッスンの簡単な説明:  
    - 解答付きのコード演習"
  • コード全体 (ChatGPTでコメント付加)
$ cat sample.py
# 必要なライブラリのインポート
import os  # 環境変数の取得に使用
import openai  # OpenAI APIを使用するために必要

from dotenv import load_dotenv  # .envファイルから環境変数を読み込むために使用

# .envファイルから環境変数を読み込む
load_dotenv()

# OpenAI APIキーの設定
openai.api_key = os.environ["AZURE_OPENAI_API_KEY"]  # 環境変数からAPIキーを取得して設定

# OpenAI APIの設定
openai.api_type = 'azure'  # Azure版OpenAI APIを使用する設定
openai.api_version = '2023-05-15'  # 使用するAPIのバージョン指定
openai.api_base = os.environ["AZURE_OPENAI_ENDPOINT"]  # 環境変数からAPIのベースURLを設定

# 生成タスクのパラメータ設定
deployment_name = "test-deployment"  # 使用するデプロイメント名
model = "davinci-002"  # 使用するモデルの指定
max_tokens = 1000  # 生成するトークンの最大数
temperature = 0.5  # 生成のランダム性を制御(0は決定論的、1は最もランダム)

# プロンプトファイルの読み込み
prompt_file = "./prompt.txt"  # 読み込むプロンプトファイルのパス
prompt = open(prompt_file, 'r').read()  # ファイルを読み込んでプロンプトテキストを取得
print("以下プロンプト##############")
print(prompt)  # プロンプトの内容を表示

# Completionを作成してテキスト生成を実行
completion = openai.Completion.create(engine=deployment_name, model=model, prompt=prompt, max_tokens=max_tokens, temperature=temperature)
# engineにはdeployment_nameを指定しているが、通常はモデル名を指定する。ここではカスタムのデプロイメントを使用しているため、このような指定になっている。

# レスポンスを出力
print("以下レスポンス##############")
print(completion.choices[0].text)  # 生成されたテキストの最初の選択肢を表示
  • 実行結果 1回目
$ python sample.py
以下プロンプト##############
- "あなたは Python 言語のエキスパートです

下記の形式で Python の初心者用レッスンを提案してください:

形式:
    - 概念:
    - レッスンの簡単な説明:
    - 解答付きのコード演習"


以下レスポンス##############
A- Pythonの初心者用レッスンの提案

概念:for文

レッスンの簡単な説明:for文は、繰り返し処理を行うための制御構文の1つで、あらかじめ指定した範囲の値や、リストや辞書型などのオブジェクトの要素を順番に取り出して、それぞれに対して同じ処理を繰り返し行うことができます。

解答付きのコード演習:

1. 数字のリスト[0, 1, 2, 3, 4]を作成し、for文を使って、リストの各要素を1つずつ取り出して、それぞれに対して2倍した値を出力してください。


numbers = [0, 1, 2, 3, 4]
for num in numbers:
    print(num * 2)

2. 英単語のリスト["apple", "banana", "cherry"]を作成し、for文を使って、リストの各要素を1つずつ取り出して、それぞれに対して最初の1文字を大文字に変換した文字列を出力してください。


words = ["apple", "banana", "cherry"]
for word in words:
    print(word.capitalize())


3. 辞書型{"apple": 100, "banana": 200, "cherry": 300}を作成し、for文を使って、辞書型の各要素を1つずつ取り出して、キーと値をそれぞれ出力してください。


fruits = {"apple": 100, "banana": 200, "cherry": 300}
for key, value in fruits.items():
    print(key, value)
  • 実行結果 2回目
$ python sample.py
以下プロンプト##############
- "あなたは Python 言語のエキスパートです

下記の形式で Python の初心者用レッスンを提案してください:

形式:
    - 概念:
    - レッスンの簡単な説明:
    - 解答付きのコード演習"


以下レスポンス##############
A: Python初心者用レッスンの提案

- 概念:if文
- レッスンの簡単な説明:if文は、条件分岐のための文法で、ifの後に条件式を書き、その条件が真の場合にはコードブロックを実行する。
- 解答付きのコード演習:


# 例題1
# if文を使って、aが10より大きい場合に「aは10より大きい」と表示するコードを書いてください。
a = 15
if a > 10:
    print("aは10より大きい")

# 例題2
# if文を使って、bが0未満の場合に「bは負の数です」と表示するコードを書いてください。
b = -3
if b < 0:
    print("bは負の数です")


- 概念:for文
- レッスンの簡単な説明:for文は、繰り返し処理のための文法で、指定した回数、または指定した範囲の繰り返しを行う。
- 解答付きのコード演習:

# 例題1
# for文を使って、1から5までの数字を順に表示するコードを書いてください。
for i in range(1, 6):
    print(i)

# 例題2
# for文を使って、リストの中身を順に表示するコードを書いてください。
lst = ["apple", "banana", "orange"]
for item in lst:
    print(item)


- 概念:関数
- レッスンの簡単な説明:関数は、複数の処理をまとめて一つのブロックにし、そのブロックを呼び出すことで処理を実行するための文法である。
- 解答付きのコード演習:

# 例題1
# 関数を使って、2つの数値の和を計算するコードを書いてください。
def add(a, b):
    return a + b

result = add(3, 5)
print(result)

# 例題2
# 関数を使って、リストの合計値を計算するコードを書いてください。
def sum_list(lst):
    total = 0
    for item in lst:
        total += item
    return total

lst = [1, 3, 5, 7, 9]
result = sum_list(lst)
print(result)


- 概念:クラス
- レッスンの簡単な説明:クラスは、オブジェクト指向プログラミングのための文法で、データとそれに対する操作をまとめたもの。
- 解答付きのコード演習:

# 例題1
# クラスを使って、簡単な四則演算ができる電卓を作成してください。
class Calculator:
    def add(self, a, b):
        return a + b

    def subtract(self, a, b):
        return a - b

    def multiply(self, a, b):
        return a * b

    def divide(self, a, b):
        return a / b

calc = Calculator()
result = calc.add(3, 5)
print(result)

# 例題2
# クラスを使って、簡単なTODOリストを作成してください。
class TodoList:
    def __init__(self):
        self.tasks = []

    def add_task(self, task):
        self.tasks.append(task)

    def remove_task(self, task):
        self.tasks.remove(task)

    def show_tasks(self):
        for task in self.tasks:
            print(task)

todo = TodoList()
todo
  • 実行結果 3回目
$ python sample.py
以下プロンプト##############
- "あなたは Python 言語のエキスパートです

下記の形式で Python の初心者用レッスンを提案してください:

形式:
    - 概念:
    - レッスンの簡単な説明:
    - 解答付きのコード演習"


以下レスポンス##############
A. 概念:ファイルの読み書き
   レッスンの簡単な説明:Python でファイルを読み書きする方法を学びます。ファイルの読み込み、書き込み、作成、削除などの操作を行い、テキストファイルとバイナリファイルの違いを理解します。
   解答付きのコード演習:
   - ファイルの読み込み
   - ファイルの書き込み
   - テキストファイルの作成
   - テキストファイルの削除
   - バイナリファイルの作成
   - バイナリファイルの読み込み

B. 概念:関数
   レッスンの簡単な説明:Python で関数を定義する方法を学びます。関数の定義、引数の渡し方、戻り値の取得などを学び、関数を使ったプログラミングの基礎を理解します。
   解答付きのコード演習:
   - 関数の定義
   - 引数の渡し方
   - 戻り値の取得
   - ローカル変数とグローバル変数の違い
   - ラムダ式の使い方

C. 概念:クラス
   レッスンの簡単な説明:Python でクラスを定義する方法を学びます。クラスの定義、インスタンスの生成、メソッドの定義などを学び、オブジェクト指向プログラミングの基礎を理解します。
   解答付きのコード演習:
   - クラスの定義
   - インスタンスの生成
   - メソッドの定義
   - クラス変数とインスタンス変数の違い
   - 継承の使い方
   - 多重継承の使い方

D. 概念:例外処理
   レッスンの簡単な説明:Python で例外処理を行う方法を学びます。try-except文の使い方、例外の種類、例外の発生時の処理方法などを学び、プログラムの安定性を高める方法を理解します。
   解答付きのコード演習:
   - try-except文の使い方
   - 例外の種類
   - 例外の発生時の処理方法
   - finally句の使い方
   - 自作例外の使い方

E. 概念:並列処理
   レッスンの簡単な説明:Python で並列処理を行う方法を学びます。threadingモジュール、multiprocessingモジュールの使い方、プロセス間通信、ロックの使い方などを学び、プログラムのパフォーマンスを向上させる方法を理解します。
   解答付きのコード演習:
   - threadingモジュールの使い方
   - multiprocessingモジュールの使い方
   - プロセス間通信の使い方
   - ロックの使い方
   - マルチスレッドの使い方

F. 概念:Webスクレイピング

まとめ

  • OpenAI APIをAzure経由で使えるようになった
  • プログラムで自由に

目次 Fundamentals of Data Engineering まとめ

Fundamentals of Data Engineering まとめ

Link

Fundamentals of Data Engineering [Book]

概要

  • Data engineering has seen significant growth over the past decade.
  • The book provides a comprehensive view for software engineers, data scientists, and analysts.
  • It teaches planning and building systems for organizational and customer needs.
  • Evaluates technologies through the data engineering lifecycle framework.
  • Authors Joe Reis and Matt Housley guide through this lifecycle.
  • Explains stitching together cloud technologies for downstream data consumers.
  • Covers critical concepts: data generation, ingestion, orchestration, transformation, storage, and governance.
  • Offers a concise overview of the data engineering landscape.
  • Provides a framework for assessing data engineering problems.
  • Advises on cutting through marketing hype for technology and process choices.
  • Uses the lifecycle for designing and building robust architectures.
  • Emphasizes data governance and security across the lifecycle.

  • 過去10年間でデータエンジニアリングは急速に成長しました。

  • この本は、ソフトウェアエンジニア、データサイエンティスト、アナリストに包括的な視点を提供します。
  • 組織と顧客のニーズに合わせたシステムの計画と構築方法を教えます。
  • データエンジニアリングライフサイクルの枠組みを通じて技術を評価します。
  • 著者のジョー・レイスとマット・ハウスリーがこのライフサイクルを案内します。
  • ダウンストリームのデータ消費者のニーズに応えるためにクラウド技術を組み合わせる方法を説明します。
  • データ生成、取り込み、オーケストレーション、変換、保存、およびガバナンスの重要な概念をカバーします。
  • データエンジニアリング風景の簡潔な概要を提供します。
  • データエンジニアリング問題を最善の慣行のエンドツーエンドの枠組みを使用して評価する。
  • 技術選択、アーキテクチャ、プロセス選択時のマーケティングハイプを見極めるアドバイスを提供します。
  • ライフサイクルを使用して堅牢なアーキテクチャを設計・構築します。
  • ライフサイクル全体にわたってデータガバナンスとセキュリティを組み込みます。

目次en

I. Foundation and Building Blocks
1. Data Engineering Described
2. The Data Engineering Lifecycle
3. Designing Good Data Architecture
4. Choosing Technologies Across the Data Engineering Lifecycle
II. The Data Engineering Lifecycle in Depth
5. Data Generation in Source Systems
6. Storage
7. Ingestion
8. Queries, Modeling, and Transformation
9. Serving Data for Analytics, Machine Learning, and Reverse ETL
III. Security, Privacy, and the Future of Data Engineering
10. Security and Privacy
11. The Future of Data Engineering

TODO

TODO 各章ごとに要約してリンク

目次 Fundamentals of Data Visualization まとめ

Fundamentals of Data Visualization まとめ

Link

  • 英語版

Fundamentals of Data Visualization [Book]

  • 無料公開Web版

Fundamentals of Data Visualization

  • 日本語版

O'Reilly Japan - データビジュアライゼーションの基礎

概要

  • Effective visualization is crucial for communicating information from complex datasets in natural and social sciences.
  • The increasing power of visualization software offers many choices and options, often overwhelming for scientists, engineers, and business analysts.
  • The book provides guidelines for creating clear and compelling figures from large datasets, focusing on choosing the right visualization type.
  • Author Claus O. Wilke emphasizes the critical elements of successful data visualization.
  • Key concepts include using color to highlight, distinguish, or represent values, and the importance of redundant coding for conveying information in multiple ways.
  • The book includes a visualizations directory as a guide to commonly used types of data visualizations.
  • Readers will find extensive examples of both effective and ineffective figures.
  • It covers how to effectively use figures in documents or reports to tell a compelling story.

  • 効果的なビジュアライゼーションは、自然科学と社会科学の複雑なデータセットから情報を伝えるために不可欠です。

  • 可視化ソフトウェアの増加するパワーは、科学者、エンジニア、ビジネスアナリストに多くの選択肢とオプションを提供し、しばしば圧倒されます。
  • この本は、大規模なデータセットから明確で魅力的な図を作成するためのガイドラインを提供し、正しいビジュアライゼーションのタイプを選択することに焦点を当てています。
  • 著者のクラウス・O・ウィルケは、成功したデータビジュアライゼーションに最も重要な要素を教えてくれます。
  • 色を使って強調、区別、または価値を表す基本概念、重要な情報を複数の方法で提供するための冗長コーディングの重要性を理解します。
  • 一般的に使用されるデータビジュアライゼーションのタイプを案内するビジュアライゼーションディレクトリを含みます。
  • 効果的な図と効果的でない図の広範な例を見つけることができます。
  • 文書やレポートで図を効果的に使用し、魅力的なストーリーを伝える方法を学びます。

目次en

  • 1 Introduction
  • Part I: From data to visualization
  • 2 Visualizing data: Mapping data onto aesthetics
  • 3 Coordinate systems and axes
  • 4 Color scales
  • 5 Directory of visualizations
  • 6 Visualizing amounts
  • 7 Visualizing distributions: Histograms and density plots
  • 8 Visualizing distributions: Empirical cumulative distribution functions and q-q plots
  • 9 Visualizing many distributions at once
  • 9.1 Visualizing distributions along the vertical axis
  • 9.2 Visualizing distributions along the horizontal axis
  • 10 Visualizing proportions
  • 11 Visualizing nested proportions
  • 12 Visualizing associations among two or more quantitative variables
  • 13 Visualizing time series and other functions of an independent variable
  • 14 Visualizing trends
  • 15 Visualizing geospatial data
  • 16 Visualizing uncertainty
  • Part II: Principles of figure design
  • 17 The principle of proportional ink
  • 18 Handling overlapping points
  • 19 Common pitfalls of color use
  • 20 Redundant coding
  • 21 Multi-panel figures
  • 22 Titles, captions, and tables
  • 23 Balance the data and the context
  • 24 Use larger axis labels
  • 25 Avoid line drawings
  • 26 Don’t go 3D
  • Part III: Miscellaneous topics
  • 27 Understanding the most commonly used image file formats
  • 28 Choosing the right visualization software
  • 29 Telling a story and making a point
  • 30 Annotated bibliography

目次ja

1章 はじめに
    1.1 見栄えの悪い図、不適切な図、誤った図

第Ⅰ部 データからビジュアライゼーションへ

2章 データを可視化する:データからエスセティクスへのマッピング
    2.1 エスセティクスとデータの種類
    2.2 スケールによってデータの値をエスセティクスにマッピング

3章 座標系と座標軸
    3.1 直交座標系
    3.2 非線形座標軸
    3.3 曲がった軸を持つ座標系

4章 カラースケール
    4.1 区別するためのツールとしての色
    4.2 データの値を表現するための色
    4.3 目立たせるためのツールとしての色

5章 ビジュアライゼーション概説
    5.1 量
    5.2 分布
    5.3 内訳
    5.4 2変数の関係
    5.5 地理空間データ
    5.6 不確かさ

6章 量を可視化する
    6.1 棒グラフ
    6.2 棒グラフのグループ化と積み重ね棒グラフ
    6.3 ドットプロットとヒートマップ

7章 分布を可視化する:ヒストグラムと密度プロット
    7.1 単一の分布を可視化する
    7.2 複数の分布を一度に可視化する

8章 分布を可視化する:経験的累積分布関数とQ-Qプロット
    8.1 経験的累積分布関数
    8.2 歪みの大きい持つ分布
    8.3 分位数-分位数(Q-Q)プロット

9章 たくさんの分布を一度に可視化する
    9.1 縦軸方向の分布を可視化する
    9.2 横軸方向の分布を可視化する

10章 内訳を可視化する
    10.1 円グラフの場合
    10.2 横並び棒グラフの場合
    10.3 積み上げ棒グラフや積み上げ密度グラフの場合
    10.4 全体に対する各要素の内訳を別々に可視化する

11章 入れ子になった内訳を可視化する
    11.1 入れ子になった内訳の誤った可視化
    11.2 モザイク図とツリーマップ
    11.3 円グラフの入れ子
    11.4 パラレルセットプロット

12章 複数の量的変数間の関連性を可視化する
    12.1 散布図
    12.2 コレログラム
    12.3 次元削減
    12.4 対応のあるデータ

13章 時系列などの独立変数の関数を可視化する
    13.1 1本の時系列
    13.2 複数の時系列と用量反応曲線
    13.3 応答変数が複数存在する時系列

14章 トレンドを可視化する
    14.1 平滑化
    14.2 定義された関数形式を用いたトレンドの表示
    14.3 デトレンドと時系列データの分解

15章 地理空間データを可視化する
    15.1 投影法
    15.2 レイヤー
    15.3 コロプレス図
    15.4 カルトグラム

16章 不確かさを可視化する
    16.1 確率を度数としてフレーミングする
    16.2 点推定の不確かさの可視化
    16.3 曲線をあてはめる際の不確かさの可視化
    16.4 仮説結果プロット

第Ⅱ部 図のデザインの原則

17章 プロポーショナルインクの原則
    17.1 線形軸方向の可視化
    17.2 対数軸を用いた可視化
    17.3 面積を直接用いた可視化

18章 重なり合った点の扱い方
    18.1 半透明化とジッタリング
    18.2 2次元ヒストグラム
    18.3 等値線図

19章 色を使う際によくはまる落とし穴
    19.1 あまりにも多くの情報や無意味な情報の表現に使ってしまう
    19.2 非単調なカラースケールをデータの値の表現に使ってしまう
    19.3 色覚異常を考慮しないデザイン

20章 表現の冗長化
    20.1 表現の冗長化を用いた凡例の設計
    20.2 凡例を用いない図の設計

21章 マルチパネル図
    21.1 スモールマルチプルプロット
    21.2 複合図

22章 タイトル、キャプション、表
    22.1 図のタイトルとキャプション
    22.2 軸や凡例のタイトル
    22.3 表

23章 データとコンテキストのバランスをとる
    23.1 適切な量のコンテキストを提供する
    23.2 背景のグリッド
    23.3 対応のあるデータ
    23.4 まとめ

24章 軸のラベルをもっと大きくする

25章 線画を避けよう

26章 3Dに走らない
    26.1 余計な3Dを使わない
    26.2 3Dの位置スケールを使わない
    26.3 3Dビジュアライゼーションの適切な使用

第Ⅲ部 その他のトピック

27章 一般的な画像ファイル形式を理解する
    27.1 ビットマップ画像とベクトル画像
    27.2 ビットマップ画像の可逆・非可逆圧縮
    27.3 画像形式間での変換

28章 適切な可視化ソフトウェアを選ぶ
    28.1 再現性と反復性
    28.2 データ探索とデータ表現
    28.3 コンテンツとデザインの分離

29章 ストーリーを伝え、強調する
    29.1 ストーリーとは何か?
    29.2 司令官に伝わる図を作る
    29.3 図を徐々に複雑にする
    29.4 図を覚えてもらいやすくする
    29.5 一貫性を持たせ、しかし、反復はしない

付録A 参考文献の手引き
    A.1 データと可視化についての考え方
    A.2 プログラミングの書籍
    A.3 統計学の教科書
    A.4 歴史的な教科書
    A.5 関連する幅広いトピックについての書籍

付録B テクニカルノート

参考文献
索引

TODO

TODO 各章ごとに要約してリンク

(更新中)Subway Map to Agile Practices まとめ

https://i.gyazo.com/6d8b03cba3e02d47ac42f98cc0ec6069.png

Subway Map to Agile Practices | Agile Alliance

Agile Alliance が提供している路線図風のAgile用語関連図。

以下PDF版

agile-alliance-subway-map-to-agile-practices.pdf

全体像

以下9種類の用語カテゴリ

https://i.gyazo.com/9852e593d981afa0ef170dfd0943b728.png

  • Extreme Programming
  • Teams
  • Lean
  • Scrum
  • Product Management
  • DevOps
  • Design
  • Testing
  • Fundamentals

61用語一覧(ABC)

  • Acceptance Tests
  • ATDD
  • Automated Build
  • Backlog Refinement
  • BDD
  • Burndown Chart
  • Collective Ownership
  • Continuous Deployment
  • Continuous Integration
  • CRC Cards
  • Daily Meeting
  • Definition of Done
  • Definition of Ready
  • Exploratory Testing
  • Facilitation
  • Frequent Releases
  • Given-When-Then
  • Heartbeat Retrospective
  • Incremental Development
  • INVEST
  • Iterations
  • Iterative Development
  • Kanban Board
  • Lead Time
  • Mock Objects
  • Niko-Niko
  • Pair Programming
  • Personas
  • Planning Poker
  • Point Estimates
  • Project Charters
  • Quick Design Session
  • Refactoring
  • Relative Estimation
  • Rules of Simplicity
  • Scrum of Scrums
  • Sign Up for Tasks
  • Simple Design
  • Story Mapping
  • Story Splitting
  • Sustainable Pace
  • Task Board
  • TDD
  • Team
  • Team Room
  • Three C's
  • Three Questions
  • Timebox
  • Ubiquitous Language
  • Unit Tests
  • Usability Testing
  • User Stories
  • Velocity
  • Version Control

各カテゴリの用語説明リンク(重複含む)

Extreme Programming

https://i.gyazo.com/a5211cfb49f7297a400a17f0a3fd7541.png

Teams

-

-

-

-

-

-

-

-

Lean

-

-

-

-

-

-

-

-

Scrum

-

-

-

-

-

-

-

-

Product Management

-

-

-

-

-

-

-

-

DevOps

-

-

-

-

-

-

-

-

Design

-

-

-

-

-

-

-

-

Testing

-

-

-

-

-

-

-

-

Fundamentals

-

-

-

-

-

-

-

-

(作成中)AI開発向けプログラミング言語Mojo 🔥 まとめ

Mojo 🔥: Programming language for all of AI

Mojoの概要

Mojo🔥開発の理由

  • 新言語の開発の意図なし:最初は新しいプログラミング言語を作る意図はありませんでした。
  • ML/AIインフラの統合:世界のML/AIインフラを統一するプラットフォームを構築する中で、スタック全体のプログラミングが複雑すぎることに気づきました。
  • 手作業でのMLIR記述:多くのMLIRを手作業で書いていて楽しくありませんでした。MLIR
  • 革新的なプログラミングモデルの必要性:AI分野に広く存在するアクセラレーターやその他の異種システムをターゲットにできる革新的でスケーラブルなプログラミングモデルが求められました。
  • 強力なコンパイルメタプログラミング:これには、強力なコンパイルメタプログラミング、適応型コンパイル手法の統合、コンパイルフロー全体のキャッシングなど、既存の言語ではサポートされていない機能が必要でした。
  • ホストCPUの重要性アクセラレーターは重要ですが、しばしば見過ごされがちな「アクセラレーター」の一つがホストCPUです。現在のCPUにはテンソルコアのようなAI加速ユニットが多くありますが、データのロードや前処理・後処理、外部システムとの統合など、特殊なアクセラレーターが対応しない操作の「フォールバック」としても機能します。
  • 一つの言語での解決:適用されるAIシステムはこれらの問題すべてに対応する必要があり、一つの言語でこれを実現する理由はないと判断し、Mojoが誕生しました。

次世代コンパイラ技術のための言語

  • AIコンピュートの課題解決に向けて:既存の言語ではAIコンピュートの課題を解決できないと気づいたため、プログラミング言語の設計と実装について根本的な再考を始めました。
  • 従来のコンパイラ技術の不適合:多様なアクセラレーターを高性能でサポートする必要があるため、LLVMGCCのような伝統的なコンパイラ技術は適しておらず、それに基づく言語やツールも不十分でした。
  • 既存技術の限界:これらのコンパイラ技術は数十年前に設計され、現代のチップアーキテクチャを完全にサポートすることができません。
  • MLIRの採用:現在、特化された機械学習アクセラレーターの標準技術はMLIR(Googleで始まり、そのリーダーがModularに移動した新しいオープンソースコンパイラインフラストラクチャ)です。MLIR
  • MLIRの強み:MLIRの強みは、AI ASIC、量子コンピューティングシステム、FPGA、カスタムシリコンなど、従来のCPUやGPUではない特殊なドメイン向けのドメイン固有コンパイラを構築する能力にあります。MLIR
  • Mojoの独自性:Modularで次世代AIプラットフォームを構築する目標のもと、MLIRを一部のインフラストラクチャに既に使用していましたが、スタック全体でMLIRの可能性を完全に解放できるプログラミング言語がありませんでした。MojoはMLIRに特化して設計された最初の主要な言語であり、AIワークロードのシステムレベルのコードを書く際に特に強力です。

Pythonファミリーのメンバー:

  • コンパイラ内部とアクセラレータのサポートMojoの主な目標は、コンパイラの内部構造の革新と、現在および新興のアクセラレータのサポートです。
  • 言語構文やコミュニティの革新は不要:言語構文やコミュニティでの革新は不要と見なし、広く使用され愛されているPythonエコシステムを採用しました。
  • Mojo言語の野心的な目標Pythonエコシステムとの完全な互換性、予測可能な低レベルのパフォーマンスとコントロール、そしてアクセラレータへのコードの部分展開が可能であることを目指しています。
  • ソフトウェアエコシステムの分断を避けるPython 2から3への移行のような痛みをPythonユーザーにもたらしたくないという考えです。
  • 既存の基盤からの発展Mojoは新しいコードベースですが、概念的にはゼロから始めているわけではありません。Pythonを採用することで、設計努力が大幅に簡素化され、構文のほとんどがすでに指定されています。
  • Mojoコンパイルモデルとシステムプログラミング機能Mojoコンパイルモデルとシステムプログラミング機能の構築に努力を集中できます。
  • 他の言語からの教訓:Rust、Swift、Julia、Zig、Nimなどの他の言語からの教訓や、開発者を新しいコンパイラや言語に移行させる経験、そして既存のMLIRコンパイラエコシステムを活用します。
  • 長期目標Mojoの長期目標はPythonのスーパーセット(既存のPythonプログラムとの互換性)を提供し、長い尾のエコシステムサポートのためにCPython実装を採用することです。
  • Pythonプログラマーへの親和性Pythonプログラマーにとって馴染み深く、CやC++を必要とするようなシステムレベルのコードを安全かつ高性能に開発するための新しいツールを提供することを目指しています。
  • 静的・動的の良さ:「静的が最良」や「動的が最良」という世界観を押し付けるのではなく、適切なアプリケーションでそれぞれが良いと考え、プログラマーが静的または動的を使用するタイミングを決定できるようにMojoを設計しました。

Pythonを選んだ理由:

  • MLとその他の分野における支配的な地位Pythonは、機械学習や数多くの他の分野で支配的な役割を果たしています。
  • 学習の容易さと広範な知識Pythonは学びやすく、多くの重要なプログラマーに知られており、素晴らしいコミュニティを持ち、価値ある多くのパッケージがあります。
  • 豊富なツール類Pythonには様々な良質なツールが揃っています。
  • 美しいAPIの開発支援Pythonの動的プログラミング機能は、TensorFlowやPyTorchのような機械学習フレームワークが、C++で実装された高性能ランタイムのフロントエンドとしてPythonを採用する理由となりました。
  • Modularにおける不可欠な部分:Modularにおいて、Pythonは顧客によって決定されるAPIサーフェススタックの不可欠な部分です。他のすべてが交渉可能であるため、「Pythonファースト」のアプローチから始めるのが合理的です。
  • Pythonの美しさPythonはシンプルで組み合わせ可能な抽象概念で設計されており、実際には冗長な句読点を省略し、強力な(動的な)メタプログラミング機能を備えています。これらはすべて、Modularで必要とされる言語への拡張のための基盤を提供します。
  • Pythonエコシステムへの貢献Pythonエコシステムにいる人々が、MojoPythonと競合するものではなく、Pythonを次のレベルへ進化させる方向として捉えてほしいと願っています。

Pythonとの互換性:

  • Pythonエコシステムとの完全な互換性MojoPythonエコシステムと完全に互換性を持つことを目指していますが、互換性には実際には二つのタイプがあります。
  • 既存のPythonモジュールのインポート:既存のPythonモジュールをMojoプログラムで使用する能力については、CPythonを使用しているため、Mojoは100%互換性があります。
  • PythonコードのMojoへの移行:すべてのPythonコードをMojoに移行する能力については、まだ完全に互換性があるわけではありません。Mojoは既にPythonの多くのコア機能をサポートしていますが、クラスのサポートを含む他の多くの機能がまだ欠けています。
  • 進行中の作業:多くの作業が必要ですが、他の主要技術の構築経験を持つチームに導かれ、目標を達成する自信があります。
  • ClangコンパイラとSwift言語への旅:ClangコンパイラやSwiftプログラミング言語の経験を通じて、互換性を持たせる方法やレガシーランタイムとの協力に関する教訓を学びました。
  • PythonMojoのコードの混在PythonMojoのコードを混在させたい場合、MojoはCPythonランタイムと直接連携し、CPythonのクラスやオブジェクトとの統合をサポートする予定です。これにより、既存の大規模なコードエコシステムとのプラグイン互換性が提供され、Mojoへの段階的な移行が可能になります。
  • 言語設計と進歩への焦点:言語設計とPythonとの完全な互換性に向けた段階的な進歩に焦点を当てることで、必要な時期に目標を達成すると信じています。
  • 純粋なMojoコードの実装:純粋なMojoコードを書く場合、実装、コンパイル、ランタイムに既存のPython技術は使用されていません。Mojo自体は、全く新しい言語であり、全く新しいコンパイルとランタイムシステムを持っています。

Pythonとの意図的な違い:

  • Python互換性と移行可能性の重要性Mojoの成功にはPythonとの互換性と移行可能性が鍵ですが、Mojoは他の言語に依存しない独立した言語として一流であるべきです。互換性を維持するためだけに新しいキーワードや文法の導入を制限するべきではありません。
  • 二つのアプローチへの取り組み
    1. CPythonの利用:既存のPython 3コードを修正せずに実行し、そのランタイムを全エコシステムとの完全な互換性のために変更せずに使用します。この方法でコードを実行することはMojoの利点はありませんが、このエコシステムの存在と利用可能性はMojoの立ち上げを加速し、Pythonが高レベルプログラミングにすでに非常に優れているという事実を活用します。
    2. 機械的な移行ツールの提供PythonからMojoへコードを移行したい人々に非常に良い互換性を提供する移行ツールを提供します。例えば、Mojoのキーワードと一致する識別子名を使用するPythonコードの移行エラーを避けるために、Mojoではバックティック機能を提供して、任意のキーワードが識別子として振る舞うことができます。
  • Mojoの統合と段階的移行:これにより、MojoはほとんどCPythonの世界にうまく統合され、Mojoプログラマーはコードを段階的に(モジュールやファイル単位で)Mojoに移行できるようになります。これはAppleObjective-CからSwiftへの移行で実証されたアプローチです。
  • Mojoと移行サポートの構築Mojoの残りの部分と移行サポートを構築するには時間がかかりますが、この戦略によりエネルギーを集中し、気を散らさずに済むと自信を持っています。
  • CPythonとの相互関係:CPythonチームがいずれMojoインタープリターを再実装するという可能性もあり、それは魅力的ですね。🔥

二つの世界の問題:

  • システムプログラミングに不適切なPythonPythonシステムプログラミングには適していないものの、接着層として素晴らしい強みを持ち、CやC++への低レベルバインディングを通じて、より良いパフォーマンス特性を持つライブラリをC、C++などの他の言語で構築することが可能です。これがNumPy、TensorFlow、PyTorchなど、エコシステム内の多くのライブラリの実現を可能にしています。
  • 高性能ライブラリ構築のコスト:このアプローチは高性能なPythonライブラリを構築する効果的な方法ですが、複雑さというコストが伴います。これは、CPythonの内部構造の低レベルな理解が必要であり、C/C++(または他の)プログラミングの知識が求められるため、Pythonを使う元々の目的を損なうことがあります。また、大規模なフレームワークの進化を困難にし、「グラフベース」プログラミングモデルへの移行を促しますが、これは「イーガーモード」システムよりも使い勝手が劣るとされています。TensorFlowやPyTorchは、この点で大きな課題に直面しています。
  • 二つの世界の問題による複雑性:この二つの世界の問題はシステムの複雑さを生み出すだけでなく、エコシステム全体をより複雑にしています。デバッガーは一般的にPythonとCのコードを横断してステップすることができず、できるものも広く受け入れられていません。PythonパッケージエコシステムがC/C++コードを扱わなければならないのは厄介です。PyTorchのようなプロジェクトでは、C++への大きな投資がありながら、使い勝手を向上させるためにコードベースの大部分をPythonに移行しようと意図的に試みています。

三つの世界とNの世界の問題:

  • Pythonエコシステムにおける二つの世界の問題Pythonエコシステム全体で共通して感じられる二つの世界の問題がありますが、機械学習フレームワークの開発者にとってはさらに厳しい状況です。
  • AI分野におけるアクセラレータの使用:AIは広範囲にアクセラレータを使用しており、これらのアクセラレータはCUDAのような特殊なプログラミング言語を使用しています。CUDAはC++の親戚ですが、独自の問題や制限があり、デバッガーやプロファイラーなどの一貫したツールがありません。また、特定のハードウェアメーカーに縛られている状態です。
  • ハードウェア分野の革新と複雑性:AI分野ではハードウェアの前面に驚くべき革新があり、その結果、複雑性は制御不能になっています。アクセラレータ向けの限定的なプログラミングシステム(OpenCL、Sycl、OneAPIなど)を構築しようとする試みがいくつかあります。しかし、この複雑性の爆発は続いており、これらのシステムのいずれも、業界に甚大な損害を与えているツールやエコシステムの根本的な断片化を解決していません。実際には断片化をさらに増加させています。

モバイルとサーバーへのデプロイメント:

  • Pythonエコシステムの課題Pythonエコシステムにはデプロイメントに関する多くの課題があります。
  • デプロイメントの多面性
    • 依存関係のコントロール:依存関係をどのように管理し、制御するか。
    • 「a.out」ファイルの展開:密封されたコンパイル済みの「a.out」ファイルをどのようにデプロイするか。
    • マルチスレッディングとパフォーマンスの向上:マルチスレッディングの改善とパフォーマンスの向上。
  • Pythonエコシステムの進歩への期待:これらの領域では、Pythonエコシステムが大きく前進することを望んでいます。

関連する取り組み:

  • Pythonの改善に向けた他の努力Pythonの改善を目指す多くの他の取り組みがありますが、これらはMojoで解決しようとしている根本的な問題を解決しません。
  • Python改善の進行中の取り組み
    • Pythonの速度向上とGILの置き換えPythonの実行速度を上げ、Global Interpreter Lock(GIL)を置き換える作業。
    • Pythonに似た言語の構築Pythonに似ているが、Pythonのサブセットであるような言語の構築。
    • 埋め込みドメイン固有言語(DSL)の構築Pythonと統合されるが、一流の言語ではない埋め込みドメイン固有言語の開発。
  • これらのプロジェクトの課題とMojoとの違い:これらのプロジェクトが直面している課題について詳細なリストは提供できませんが、これらがMojoが解決する問題とは異なる理由については言及できます。

CPythonの改善とPythonJITコンパイル

  • CPython性能の向上:最近、コミュニティはCPythonの性能向上と他の実装問題に大きなエネルギーを注いでおり、これが大きな成果を上げています。例えば、Python 3.11は内部改善によりPython 3.10に比べて10-60%のパフォーマンス向上を達成しました。Python 3.12ではトレースオプティマイザーを導入してさらなる向上を目指しています。
  • GILの制御とJITコンパイル:GIL(Global Interpreter Lock)を制御しようとする多くのプロジェクトや、PyPyのようにJITコンパイルやトレーシングアプローチを用いてPythonを高速化するプロジェクトがあります。
  • これらの取り組みとModularのニーズの違い:これらの取り組みは素晴らしく、コミュニティにとって価値があると考えますが、残念ながらModularでのニーズを満たすものではありません。これらの方法では、アクセラレータへの統一言語の提供が可能になりません。多くの現代のアクセラレータは非常に限定された動的機能をサポートしているか、または非常に低いパフォーマンスでそれを行っています。さらに、システムプログラマーは「パフォーマンス」だけでなく、計算の方法に対する予測可能性とコントロールを求めます。
  • CまたはC++の使用排除と最高のパフォーマンスの追求Pythonライブラリ内でCまたはC++を使用する必要を排除し、最高のパフォーマンスを追求し、場合によっては動的機能を一切受け入れることができません。したがって、これらのアプローチは私たちの問題を解決しません。

PythonサブセットとPythonライクな言語:

  • 「デプロイ可能な」Pythonの試み:TorchScript(PyTorchプロジェクトから)のように、デプロイ可能なPythonを構築しようとする試みが多数あります。これらは低依存性のデプロイメントソリューションを提供し、時には高いパフォーマンスを持つため、有用です。
  • Pythonライクな構文の利点Pythonに似た構文を使用するため、新しい言語を学ぶよりも簡単である可能性があります。
  • 広範囲な採用の欠如:これらの言語はPythonのサブセットであるため、一般的にPythonエコシステムと相互運用性がなく、優れたツール(例えばデバッガー)がないことが多く、Pythonの不便な振る舞いを一方的に変更することが多いため、広範囲に採用されていません。これは互換性を壊し、エコシステムをさらに断片化します。
  • これらのアプローチの課題:これらのアプローチはPythonの弱点を解決しようとしますが、Pythonの強みを活かすことはありません。これらはCやC++への新たな代替を提供する可能性がありますが、Pythonの動的な使用ケースを解決せず、「二つの世界の問題」を解決することはできません。このアプローチは断片化を促進し、非互換性は移行を困難から不可能にします。Python 2からPython 3への移行がいかに困難であったかを思い出してください。

PythonスーパーセットとC互換性:

  • Mojoの設計Mojoは、システムプログラミング機能が向上したPythonのスーパーセットとして設計されており、PyrexやCythonのような他のPythonスーパーセットといくつかの高レベルなアイデアを共有しています。Mojoと同様に、これらのプロジェクトは自身の言語を定義し、Python言語もサポートしています。これにより、PythonとCライブラリの両方と相互運用できる、より高性能なPython拡張を書くことができます。
  • Pythonスーパーセットの利点と限界:これらのPythonスーパーセットは、特定の種類のアプリケーションには素晴らしく、一部の人気Pythonライブラリによって効果的に適用されています。しかし、これらはPythonの二つの世界の問題を解決せず、CPythonのコアセマンティクスに依存しているため、それなしでは機能しません。一方、Mojoは既存のPythonコードとの互換性を提供するために必要な場合にのみCPythonを使用します。純粋なMojoコードは既存のランタイムやコンパイラ技術を使用せず、代わりにMLIRベースのインフラストラクチャを使用して、幅広いハードウェアでの高性能実行を可能にします。

Python内の埋め込みDSL

  • 埋め込みドメイン固有言語の開発Python内で埋め込みドメイン固有言語(DSL)を構築するのは一般的なアプローチで、通常はPythonのデコレーターを使用してインストールされます。TensorFlowの@tf.functionデコレーターやOpenAIのTritonプログラミングモデルの@triton.jitなど、多くの例があります。
  • システムの主要な利点:これらのシステムの大きな利点は、Pythonツールのエコシステムとの互換性を維持し、Pythonロジックにネイティブに統合することで、動的な使用ケースのためのPythonの強みと共存する埋め込みミニ言語を可能にすることです。
  • 埋め込みミニ言語の限界:これらのシステムによって提供される埋め込みミニ言語は、しばしば予想外の制限があり、デバッガーや他のワークフローツールとの統合がうまくいかず、異種コンピュートを統一し、大規模なカーネルやシステムを書くための主要な言語であることを目指す私たちが求めるネイティブ言語統合のレベルをサポートしていません。
  • Mojoによる全体システムの使いやすさの向上Mojoでは、システムを単純化し、より一貫性を持たせることによって、全体の使いやすさを前進させることを目指しています。埋め込みDSLはデモをすばやく立ち上げるための迅速な方法ですが、私たちはより良い使いやすさと予測可能性を提供するために、追加の努力と作業を行う意思があります。
  • Mojoでこれまでに構築したものを知るにはMojoマニュアルを参照してください。

インストール

TODO 以下続き記載

Developer Console

深層距離学習(Deep Metric Learning) まとめ

深層距離学習(Deep Metric Learning) まとめ

Xlgd/metric-learning-papers: A collection of metric learning papers.

  • 距離学習の目的:

    • データポイント間の距離を測定する機械学習アプローチ。
    • サンプル間の類似性を測定し、学習タスクに最適な距離メトリックを使用すること。
    • 伝統的な距離メトリック(ユークリッド、シティブロック、コサインなど)を使用。
    • 一般的に線形投影を使用する距離学習方法は、非線形特性を示す実世界の問題を解決するのに限界がある。
    • メトリック学習は、(弱く)監視されたデータからタスク固有の距離メトリックを自動的に構築することを目指す。
    • 学習された距離メトリックは、さまざまなタスク(例:k-NN分類、クラスタリング、情報検索)に使用される。
    • データ間の距離や類似性を学習するために深層学習を使用。
    • 生データからデータ間の距離や類似度を計算し、同じクラスのデータを近づけ、異なるクラスのデータを遠ざける。
    • 効果的な埋め込み空間(embedding space)を学習し、類似するデータポイントを近くに、異なるデータポイントを遠くに配置。
  • 問題設定:

    • 教師あり学習:各データポイントがクラス(ラベル)に属する。
    • 教師あり学習:データポイントのセットがタプルレベルでのみ監督される。
    • このデータを基に、メトリック学習問題は一般に最適化問題として定式化される。
  • マハラノビス距離:

    • マハラノビス距離は、特徴空間の線形変換後のユークリッド距離。
    • マハラノビス距離は「疑似メトリック」と見なされる。
    • 正半定行列を用いたマハラノビス距離のパラメータ化も可能。
  • 一般的なクラス分類との違い:

    • 通常の分類タスクでは、データポイントを正しいカテゴリに割り当てるのに対し、深層距離学習では、データポイントの類似性を表す埋め込み空間を構築することが目的。
    • 一般的な分類タスクではラベル付きデータが必要だが、深層距離学習ではラベルのペアやトリプレットが必要。
  • 学習手法:

    • 一般的なクラス分類ではサンプル間の距離を考慮せずに特徴量を抽出するが、深層距離学習ではサンプル間の距離を大きくし、異なるクラスのサンプル間の距離を小さくする。
    • ユークリッド距離や特徴ベクトル間の角度を使用した学習手法がある。
  • Triplet Loss:

    • 埋め込み空間におけるサンプル間のユークリッド距離で損失関数を計算。
    • サンプル選択がモデル訓練の成功と収束性に影響。
  • ArcFace:

    • ソフトマックス損失関数を応用し、加算角度マージン損失を導入。
    • 埋め込み空間における異なるクラス間の角度分離を大きくする。
  • AdaCos:

    • 角度ベースのソフトマックス損失の改良型。
    • スケールパラメータやマージンを自動で最適化。
  • 応用例:

    • 最近傍モデル:分類、回帰、異常検出モデルの改善に学習メトリックを使用。
    • クラスタリングアルゴリズムが見つけたクラスターに意図されたセマンティクスへのバイアスをかけるためにメトリック学習を提供。
    • 情報検索:データベースからクエリ要素に意味的に最も近い要素を取得するために学習メトリックを使用。
    • 次元削減:(弱く)監督された設定でのデータの次元を減らす方法としてメトリック学習を見ることができる。
    • 画像検索、物体認識、顔認識、テキスト分類、推薦システム、クラスタリングなど、多岐にわたる分野での応用。
    • 医療、金融、ロボット工学、ソーシャルメディアなどでの可能性。
    • 入力データは画像に限定されない

対照学習(Contrastive Learning)と代表手法 SimCLR まとめ

元論文 2011.00362.pdf

  • 自己教師あり学習(Self-supervised Learning)

    • SSLと略される。
    • ラベル無しデータを用いた教師なし学習の一種。
    • データ自身から自動的にラベルを生成し学習。
    • ディープラーニングを含む機械学習の一部門。
    • 現実の問題に対し、ラベル付きデータを大量に用意するのが困難であるため、注目されている。
    • 教師無し学習の一種として分類される。
  • 対照学習(Contrastive Learning)

    • 対照学習は、自己教師あり学習SSLの一種で、機械学習の手法。
    • ラベル付けせずにデータ同士を比較して特徴量を学習。
    • 肯定的および否定的なインスタンスのペアを比較
    • 目的は、似たデータを近く、異なるデータを遠くに配置すること。
    • 応用領域:コンピュータービジョン、自然言語処理NLP)。
    • 代表的な手法:SimCLR、PCL、BYOL。
  • 教師付き対照学習(SCL, Supervised Contrastive Learning)

    • ラベル付きデータを使用して、モデルが類似および非類似のインスタンスを区別するように訓練
    • モデルはデータポイントのペアとそれらが類似しているか異なるかを示すラベルとともに訓練
    • 類似したインスタンスが近くに集まり、非類似のインスタンスが遠ざけられる表現空間を学習することが目的
  • 自己教師付き対照学習(SSCL, Self-Supervised Contrastive Learning)

    • 明示的なラベルに頼らずにラベルのないデータから表現を学習するアプローチ
    • ラベルのないデータから肯定的および否定的なペアを作成するプリテキストタスクの設計を活用
    • モデルがデータ内の意味のある特徴と類似性を捉えるようにプリテキストタスクが慎重に設計
  • SSCLの応用例:

    • コンピュータビジョンでは、画像分類、物体検出、画像生成などのタスクで成功。
    • 自然言語処理では、文の表現学習、テキスト分類、機械翻訳などのタスクに適用
  • SimCLR

A Simple Framework for Contrastive Learning of Visual Representations

google-research/simclr: SimCLRv2 - Big Self-Supervised Models are Strong Semi-Supervised Learners

Advancing Self-Supervised and Semi-Supervised Learning with SimCLR – Google Research Blog

summary

https://1.bp.blogspot.com/--vH4PKpE9Yo/Xo4a2BYervI/AAAAAAAAFpM/vaFDwPXOyAokAC8Xh852DzOgEs22NhbXwCLcBGAsYHQ/s1600/image4.gif

  1. SimCLRの紹介: Google Researchのチーム、Ting ChenとGeoffrey Hintonを含む、画像分類における自己教師あり学習と半教師あり学習のための新しいフレームワークであるSimCLRを紹介します。

  2. 自己教師あり学習の背景: BERTやT5などの自然言語処理の最近の進歩は、大規模なラベルなしデータセットでの事前学習とその後の小規模ラベル付きデータセットでの微調整の効果を示しています。このアプローチは現在、コンピュータビジョン分野で探求されています。

  3. 現在の技術の課題: 画像データに対する既存の自己教師あり学習方法は複雑であり、アーキテクチャや訓練手順の大幅な変更が必要なため、広く採用されていません。

  4. SimCLRフレームワーク: SimCLRは、画像の自己教師あり表現学習の既存の方法を簡素化し、改善します。これには、ラベルなし画像での学習を通じて一般的な表現を学び、それを少量のラベル付きデータセットで特定のタスクのために微調整することが含まれます。

  5. 対照的学習方法: SimCLRは、同じ画像の異なる変換間の合意を最大化し、異なる画像間の合意を最小化するためにニューラルネットワークを訓練する対照的学習を使用します。

  6. 画像変換と表現: フレームワークは、切り取り、色の歪み、ガウスぼかしなどの単純な変形を使用して画像を変換します。これらの表現は、ResNetベースの畳み込みニューラルネットワークと全結合ネットワークを使用して計算されます。

  7. 訓練と微調整: ネットワークは、対照的目的の損失を最小限に抑えるために確率的勾配降下を使用して訓練されます。ラベルなし画像での事前トレーニングの後、モデルは特定のタスクでの性能を向上させるためにラベル付き画像で微調整することができます。

  8. 成果: SimCLRは画像分類において新記録を達成し、ImageNetデータセットのラベル付き画像のわずか1%を使用して85.8%のトップ5精度を達成しました。

パフォーマンス

https://1.bp.blogspot.com/-LpvCxgNepEI/Xo4axqZpoNI/AAAAAAAAFpE/NKjDKOQSnVEdq-gHUCDtl88LaUczNX_pACLcBGAsYHQ/s1600/image2.png

1. SimCLRによる性能向上:

  • ImageNetにおいて、SimCLRは自己教師あり学習と半教師あり学習を大幅に向上させる。例えば、SimCLRの表現を使用した線形分類器は76.5%のトップ1精度と93.2%のトップ5精度を達成し、以前の最高(CPC v2)を上回る。
  • ラベルの1%のみでファインチューニングすると、SimCLRは63.0%のトップ1精度と85.8%のトップ5精度を達成する。
  • 完全なラベルでのファインチューニングでは、SimCLRは教師ありベースラインを上回り、30エポックで80.1%のトップ1精度を達成する。

2. 対照的学習における主要な発見:

  • 発見1: 画像変換の組み合わせ(ランダムクロッピングとカラー歪み)が重要である。

https://1.bp.blogspot.com/-bO6c2IGpXDY/Xo4cR6ebFUI/AAAAAAAAFpo/CPVNlMP08hUfNPHQb2tKeHju4Y_UsNzegCLcBGAsYHQ/s640/image3.png

  • 発見2: SimCLRにおける非線形射影の使用は、表現品質を向上させるために不可欠である。
  • 発見3: スケーリングアップ(より多くの例の処理、大きなネットワークの使用、長期トレーニング)が性能を大幅に向上させる。

プロンプト管理Chromeエクテンション "AI Prompt Genius" まとめ

AI Prompt Genius

ChatGPT Prompts Extension | Discover, Share and Use Best Prompts

tutorial

Prompt Genius Tutorial Part One - Prompt Creation - YouTube

このチュートリアルでは、AIプロンプトジーニアス拡張機能を使用して、最初のプロンプトを作成する方法を説明します。主なポイントは以下の通りです。

  1. 拡張機能へのアクセス: 拡張機能アイコンをクリックして、プロンプト作成ページなどの拡張機能ページを開きます。

AI Prompt Genius

  1. 新しいプロンプトの作成: 新しいプロンプトを作成するためにクリックします。デモプロンプトが置き換わり、無題のプロンプトが表示されます。

  1. タイトルとテキストの追加: プロンプトに名前を付け(例:"My First Prompt")、提供されたボックスにテキストを追加します。

  1. プロンプト変数の使用: 使うたびに変わる変数をプロンプトに組み込みます。例えば、"things"のような変数を追加し、異なる使用法に合わせてその値を変更できます。
  2. プロンプトの保存: エンターキーを押す、ボックスの外をクリックする、または保存アイコンを使用してプロンプトを保存します。
  3. カテゴリの選択: プロンプトの発見を助けるために、事前に定義されたカテゴリから選択します。
  4. タグの追加: タグはカスタムカテゴリとして機能します。プロンプトに複数のタグを追加し、フィルタリングに使用できます。
  5. タグの編集と削除: 編集アイコンをクリックしてタグを選択し、編集または削除します。
  6. アクションボタンの使用: アクションボタンには、プロンプトの削除、Redditでの共有、または変数を使用したプロンプトの使用(例:"cats are so cool")が含まれます。
  7. プロンプトのフィルタリングと検索: カテゴリによるプロンプトのフィルタリング、特定のプロンプトの検索、またはキュレーションされたプロンプトの探索を行います。
  8. プロンプトのインポートと保存: Redditなどのソースからプロンプトをインポートするか、タイトル、カテゴリ、タグ付けして保存します。

LLMOps (Large Language Model Operations) まとめ

What Is LLMOps? | Databricks

以下は、テキストの要約です。「LLMOps」またはLarge Language Model Opsについてのテキストです。LLMOpsは、製品環境での大規模言語モデル(例:OpenAIのGPT、GoogleのBard、DatabricksのDollyなど)の運用管理に使用される実践、技術、ツールを指します。LLMOpsには、データサイエンティスト、DevOpsエンジニア、ITプロフェッショナルとの協力が含まれ、これらのモデルに関連する固有の課題に対処します。

LLMOpsに関する主要なポイントは次のとおりです:

  1. 伝統的なMLOpsとの違い:LLMOpsは、専門のハードウェア、転移学習、人間のフィードバック、ハイパーパラメータ調整、大規模言語モデルに固有の性能メトリクスなど、大規模言語モデルに特有の要因を考慮します。
  2. プロンプトエンジニアリング:指示に従うモデルのために適切なプロンプトの構造化は、信頼性のある応答を得るために重要です。
  3. LLMチェーンまたはパイプラインの構築:LLMパイプラインは、複雑なタスクのために複数のLLM呼び出しを結びつけます。
  4. LLMOpsの利点:LLMOpsは、大規模言語モデルの展開において効率性、拡張性、リスク削減を向上させます。
  5. LLMOpsの構成要素:LLMOpsはデータ分析、データ準備、プロンプトエンジニアリング、モデルの微調整、ガバナンス、モデルの提供、モニタリングなどを包括することがあります。
  6. ベストプラクティス:LLMOpsの各段階では、再現可能なデータ分析、オープンソースライブラリを使用したモデルの微調整、モデルのレビューとガバナンス、モデルの提供における自動化、アラート付きのモデルモニタリングなど、特定のベストプラクティスが必要です。
  7. LLMOpsプラットフォーム:LLMOpsプラットフォームは、大規模言語モデルの協力、実験の追跡、プロンプトエンジニアリング、モデル管理、展開、モニタリングを容易にします。

全体として、大規模言語モデルの複雑さと特定の要件を考慮して、LLMOpsは製品環境での効果的な管理と展開に不可欠です。

LLMOps - Large Language Model Operations

このテキストは、LLMOps(Large Language Model Operations)の利点を説明し、効率性、リスク削減、スケーラビリティの3つの主要な分野に分類しています。

  1. 効率性:

    • LLMOpsは、データサイエンティスト、MLエンジニア、DevOps、ステークホルダー間のコラボレーションを効率化し、迅速なコミュニケーションと洞察共有、モデル開発および展開の加速を実現します。
    • モデルトレーニングの最適化、適切なアーキテクチャの選択、モデルの剪定と量子化などのテクニックを活用することで、計算コストを削減します。
    • LLMOpsは、効率的なファインチューニング、監視、リソースの最適化に向けたGPUなどの適切なハードウェアリソースへのアクセスを確保します。
    • 高品質なデータセットの入手、クリーニング、トレーニング用途への利用を促進し、データ管理を簡素化します。
    • 学習率やバッチサイズなどのハイパーパラメータを改善し、DataOpsとの統合によりデータフローをスムーズにします。
    • タスクの自動化と迅速な実験を通じて反復とフィードバックループを加速させます。
    • モデルの作成から展開までのプロセスを効率化し、最適なパフォーマンスを提供します。
  2. リスク削減:

    • 機密情報の保護と脆弱性不正アクセスの防止に貢献し、セキュリティとプライバシーを向上させます。
    • 規制要求への透明性と迅速な対応を提供し、組織や業界のポリシーとの適合性を確保します。
  3. スケーラビリティ:

    • 多数のモデルを監視、制御、管理、監視する際にデータの簡単なスケーラビリティと管理を可能にします。
    • より迅速なユーザーエクスペリエンスを提供するためにモデルの待ち時間を改善します。
    • 継続的な統合、提供、展開環境でのモデル監視によりスケーラビリティが簡素化されます。
    • LLMパイプラインを通じてコラボレーションを奨励し、競合を減少させ、リリースサイクルを加速させます。
    • データチーム間での協力を強化し、DevOpsとITとの競合を減少させ、リリース速度を向上させます。
    • 企業向けアプリケーションにとって重要な大量のリクエストを同時に処理する能力を提供します。

LLMOps:基盤モデルに基づくアプリケーション開発のワークフロー|Weights & Biases Japan

記事「LLMOps:基盤モデルに基づくアプリケーション開発のワークフロー」は、Weights & Biases Japanによって書かれており、大規模言語モデル(LLM)の機能を活用し拡張してアプリケーションを開発・提供するためのワークフローについて論じています。この記事では、機械学習モデルの開発と運用を統合するMLOpsの重要性に焦点を当て、OpenAIやStability AIなどの先進的なAI開発企業がこれをどのように活用しているかを説明しています。

記事では、MLOpsのベストプラクティスをレビューし、これらがLLMOpsにどのように適用されているかを探ります。LLMOpsでは、社外で開発された基盤モデル(FM)を中心とする開発が重要であり、これらのモデルと自社データを適切に統合することが求められます。

MLOpsワークフローの主要な構成要素には以下のものがあります:

  1. MLモデル開発:データ収集、機械学習アルゴリズムによる実験、仮説の形成と検証が含まれます。
  2. デプロイメント:完成したモデルを提供するための推論APIの実装と、リリース前のリスク評価が行われます。
  3. インテグレーション:サービス提供のためのシステムやアプリケーションを開発し、テストを経てサービスを開始します。これを「プロダクション」ステージと呼びます。
  4. モニタリング:サービスやモデルの運用を監視し、ビジネス評価に基づいてモデルの継続的なアップデートとサービスの改善を行います。

また、記事はLLMの導入において、基盤モデルと自社開発のバランスについても触れています。新しい技術である生成AIに関する不確実性にもかかわらず、多くの企業がリスクを回避しながら「とりあえずやってみる」アプローチを採用しています。

LLMモデルの開発には、主に以下の三つのアプローチが存在します:

  1. LLM基盤モデルのゼロからの構築:膨大なリソースを必要とするため、取り組むことに躊躇する企業も多いですが、日本語に特化したLLMを自社で開発する取り組みが行われています。
  2. 追加学習でFMをファインチューニング:チャット型の応答やコード生成など、さまざまなタスクに対して基盤モデルをチューニングしてカスタマイズする方法です。
  3. 自社のデータを融合し、インコンテクストラーニング:すでに公開されているファインチューニング済みモデルを使用し、モデルに対するプロンプトの実行時に追加情報を提供することで、知識を拡張します。

最後に、記事ではMLOpsの効果的な導入と運用についてより深く知りたい方向けに、同社が公開しているコースを紹介しています。

course

LLMOps - DeepLearning.AI

要約:仕様の複雑化、過渡期特有の難解なコード、技術スタックの老朽化… システムの健全な成長を妨げる要因に対する基本戦略 - ログミーTech

仕様の複雑化、過渡期特有の難解なコード、技術スタックの老朽化… システムの健全な成長を妨げる要因に対する基本戦略 - ログミーTech

要約:

  • 成瀬允宣氏、GMOインターネットグループ所属のデベロッパーエキスパートが、システムアーキテクチャの刷新についての取り組みと成果を発表。
  • システムアーキテクチャ刷新の背景として、組織の継続的成長の必要性を強調。
  • システム成長の阻害要因として、仕様の複雑化、過渡期特有の難解なコード、技術スタックの老朽化を指摘。
  • 仕様の複雑化:サービスの成長に伴い機能が追加され、仕様が複雑化する。
  • メンバーの入れ替わり:新しいメンバーの参加と古いメンバーの退職により、情報の伝達と理解にギャップが生じる。
  • ドキュメントの不確実性:メンテナンスが行われず、時代遅れの情報が残る問題。
  • 過渡期特有の複雑なコード:他プロジェクトからのコード流用や未熟なコードが成長を阻害。
  • 動いていることが正義という考え方によるリファクタリングの欠如。
  • 古い技術スタックの使用:例えば、ASP.NETの旧バージョンなどが依然として使用されている。
  • 成瀬氏は、これらの課題に取り組み、システムアーキテクチャを刷新する過程での学びや成果を共有。
  • Struts」の使用:2001年から使われており、当時の技術スタックが現在も使用されている。
  • VBVisual Basic)の使用:20年前は主流だったが、現在は.NET Frameworkの一部としてほぼC#と同じだが、若干の構文の違いがある。
  • パッケージマネージャーの欠如:「npm」が2010年に登場したが、多くのプロジェクトではパッケージマネージャーが未導入で、最新の技術スタックとは異なる状況。
  • 健全なシステムを目指す重要性:現在の問題を排除し、成長しやすいシステムを目指すべき。
  • システムの分解と疎結合:巨大なモノリシックなシステムを小さな単位に分解し、理解しやすくする。また、密結合なシステムを疎結合に変更する。
  • コードの多様性の削減:無意味なコードの多様性を減らし、書き方をある程度統一する。
  • コンウェイ戦略の採用:望ましいアーキテクチャを実現するために、組織やチームの構造を進化させる。
  • マイクロサービスの採用:サービスのサイズが小さく、互いに疎結合であることが目標に合致。
  • 重要な参考文献:『マイクロサービスパターン』と『モノリスからマイクロサービスへ』。
  • Pub/Subのアーキテクチャの採用:サービス間の依存関係を疎にし、チームの成長を阻害しない。
  • Proof of Concept(PoC)の実施:フレームワークに依存せず、新しいシステムに移行する方法の検証。
  • マイクロサービスの実装:「Akka」「Axon」「Eventuate」「Spring Boot」+「Spring Cloud」などのフレームワークの評価と選択。
  • CQRS+ESの実現に必要なライブラリの開発:「Kinesis」などのメッセージブローカーの利用。
  • 先行開発事例の作成:新しいアプローチの道筋を示し、他者が従いやすくする。

  • 「イネイブリングチーム」の結成:スキル習得を支援する専門チームを作成。

  • メンバーの学習フェーズ:新しいアーキテクチャの習得に時間を要した。
  • 属人化の問題への対応:イベントストーミングを用いて、ドキュメントのメンテナンスを組み込むことで対処。
  • 技術支援の強化:経験豊富な外部の専門家を技術支援として迎え入れる。
  • 多くの失敗と学び:フレームワーク選定ミス、複数プロジェクトの同時進行、意思疎通の問題など。
  • イネイブリングチームの成功:技術支援の強化により、他チームへの教育効果が上昇。
  • マイクロサービスの採用:SpringとAxon Frameworkを用いたシステムが完成。
  • イベントストーミングの効果:開発者が図を参照しながらコードを書く習慣が形成される。
  • Pub/Subアーキテクチャの実現:Kafkaを用いたデータ伝達でサービス間の依存関係を緩和。
  • アーキテクチャ刷新の成果:仕様の複雑化の解消、難解なコードの解決、技術スタックの更新。
  • アーキテクトの役割:後続のメンバーのために道を切り開くことが重要。

Trelloユーザー約1511万人分メールアドレス流出、流出有無確認方法

Trelloのユーザー約1511万人分のメールアドレス流出か、自分のメールアドレスが含まれているかどうか調べる方法はコレ - GIGAZINE

以下の方法で流出有無を確認

自分のメールアドレスやID名で検索するとハッキングされて過去の流出リストに入っていたかどうかがわかる「Have I been pwned?」 - GIGAZINE

自分のメアドで調べてみると、Trelloだけでなく、過去11件ほどさまざまなWebサービスで、メールアドレスやパスワードが情報漏洩していたようです。パスワード設定は、サービスごとにランダムですが、念の為リセットしておこうと思います。

AlphaGeometry: 数学オリンピック幾何学問題正解率が金メダリスト同等レベルに (Google DeepMind)

AlphaGeometry: An Olympiad-level AI system for geometry - Google DeepMind

「AlphaGeometry: An Olympiad-level AI system for geometry」と題された2024年1月17日に発表された記事は、複雑な幾何学の問題を解決するために設計された先進的なAIシステムであるAlphaGeometryを紹介しています。このシステムは、特に幾何学において、数学のAI推論能力において顕著な飛躍を表しています。AlphaGeometryは、高校生向けの権威ある競技会である国際数学オリンピアード(IMO)の問題を解決することで注目されています。

記事からの主なハイライトは以下の通りです:

  1. パフォーマンスベンチマーク IMO幾何学問題30問(IMO-AG-30)を使ったテストで、AlphaGeometryは標準オリンピアードの時間制限内に25問を解決しました。この成績は、平均25.9問を解決した人間の金メダリストと比較可能です。以前の最先端AIシステム(Wuの方法に基づく)は10問しか解決できませんでした。

  2. ニューロシンボリックアプローチ: AlphaGeometryは、ニューラル言語モデルと記号演算エンジンを組み合わせています。言語モデルは迅速に潜在的な解決策を特定し、記号エンジンは厳密に解を導き出します。これにより、速度と精度のバランスが取れています。

  3. 合成データトレーニング: システムは1億個の独自の合成幾何学例を使用してトレーニングされ、人間が生成したトレーニングデータに依存しない運用が可能になりました。このアプローチは、複雑な問題解決タスクのためのAIシステムのトレーニングにおけるデータ不足の課題に対処しています。

  4. 解決プロセス: AlphaGeometryは、与えられた問題図から新しいステートメントを推論し始めます。解が見つからない場合、言語モデルは新しい幾何学的構造を提案し、演算エンジンが解を見つけるのを助けます。

  5. 印象的な出力: IMOの金メダリストであり数学コーチのEvan Chenによる評価では、AlphaGeometryの解決策は検証可能でクリーンであるとされ、人間の解決者と同様に古典的な幾何学ルールを使用しています。

  6. 範囲と限界: 現在、AlphaGeometryは幾何学の問題に特化していますが、これは通常、IMOの問題の三分の一を占めます。しかし、その能力はAIの推論と問題解決における重要な進歩を示しています。

  7. 将来の可能性: AlphaGeometryの開発は、特に数学的推論におけるAI研究の広範な取り組みと一致しています。幾何学におけるその成功は、様々な分野で新しい知識を発見し検証するより洗練された、一般的なAIシステムに向けた一歩と見なされています。

全体として、AlphaGeometryは高レベルの数学的問題を解決するAIの能力を示す顕著な成果であり、教育、研究、その他の分野での潜在的な応用を示唆しています。

The article titled "AlphaGeometry: An Olympiad-level AI system for geometry," published on January 17, 2024, introduces AlphaGeometry, an advanced AI system designed to solve complex geometry problems. This system represents a significant leap in AI reasoning capabilities in mathematics, particularly geometry. AlphaGeometry is notable for its performance in solving problems from the International Mathematical Olympiad (IMO), a prestigious competition for high-school students.

Key highlights from the article include:

  1. Performance Benchmark: In tests with 30 IMO geometry problems (IMO-AG-30), AlphaGeometry solved 25 within the standard Olympiad time limit. This performance is comparable to the average human gold medalist who solved 25.9 problems. The previous state-of-the-art AI system, based on Wu's method, solved only 10 problems.

  2. Neuro-Symbolic Approach: AlphaGeometry combines a neural language model with a symbolic deduction engine. The language model quickly identifies potential solutions, while the symbolic engine rigorously deduces the solutions, creating a balance between speed and accuracy.

  3. Synthetic Data Training: The system was trained using 100 million unique synthetic geometry examples, allowing it to operate without reliance on human-generated training data. This approach addresses the challenge of data scarcity in training AI systems for complex problem-solving tasks.

  4. Solution Process: AlphaGeometry begins by deducing new statements from a given problem diagram. If no solution is found, the language model suggests new geometric constructs, aiding the deduction engine in finding a solution.

  5. Impressive Outputs: Evaluated by Evan Chen, a math coach and former IMO gold medalist, AlphaGeometry's solutions are noted for being both verifiable and clean, using classical geometry rules similar to human solvers.

  6. Scope and Limitations: Currently, AlphaGeometry specializes in geometry problems, which are typically one-third of the problems in an IMO. However, its capabilities demonstrate significant progress in AI reasoning and problem-solving.

  7. Future Potential: The development of AlphaGeometry aligns with broader efforts in AI research, particularly in mathematical reasoning. Its success in geometry is seen as a step towards more sophisticated, general AI systems capable of discovering and verifying new knowledge in various fields.

Overall, AlphaGeometry represents a remarkable achievement in AI's ability to solve high-level mathematical problems, demonstrating potential applications in education, research, and beyond.