Upgrade to Pro — share decks privately, control downloads, hide ads and more …

BigQuery powered by Vertex AI Gemini - 데이터야놀자 2024

Sungmin Han
December 01, 2024

BigQuery powered by Vertex AI Gemini - 데이터야놀자 2024

이 발표자료는 데이터 엔지니어링의 최신 기술을 소개하고, BigQuery와 Vertex AI Gemini의 통합을 통해 데이터 처리와 분석에 어떻게 혁신을 가져올 수 있는지에 대해 다룹니다. 특히 LLM(Gemini)의 활용 사례와 데모를 통해 실질적인 응용 방안을 제시하며, 앞으로 데이터 엔지니어의 업무 스타일 변화에 대한 통찰도 함께 담고 있습니다.

Sungmin Han

December 01, 2024
Tweet

More Decks by Sungmin Han

Other Decks in Technology

Transcript

  1. - LLM (Large Language Model) - Gemini - Gemini in

    BigQuery (Gemini SQL Call) - BigQuery in Gemini (BigQuery Function Call) - Gemini in Dashboard - 앞으로 데이터 엔지니어링 업무 스타일 변화에 대한 생각 오늘 얘기할 것은
  2. Speaker Former Tech Director, Riiid AI/ML, and Cloud GDE (Google

    Developer Experts) GDG Golang Korea Organizer F-Lab Python Mentor Sungmin Han [ [email protected] ] [ https://www.linkedin.com/in/sungmin-han-ml/ ] Former Research Engineer, Naver Clova
  3. Pre-training vs SFT Large Language Model (LLM) Large Unlabeled Corpus

    Large Language Model (LLM) Small Labeled Corpus Pre-Training Supervised Fine-Tuning (SFT)
  4. Ultra Pro Flash Nano 최고 품질 높은 비용 및 지연

    고품질 중간 비용 및 지연 고품질 저비용 및 지연 균형잡힌 품질 최저비용 및 지연 Gemini Types
  5. Via Gemini 일반 유저 개발자 엔터프라이즈 사용자 개발자 Available Available

    Available Available Via Google Cloud Vertex AI Generative AI Studio Via Google Cloud Vertex AI API Via Google AI Studio Gemini 이용 방법
  6. BigQuery + Gemini Assistance Gemini의 지원을 받아 BigQuery 사용 (Duet

    AI) 1 Gemini Call BigQuery SQL으로 Gemini에 입력 제공 및 결과를 쿼리 결과로 수신 2 BigQuery Call Gemini가 여건에 따라 데이터의 정보를 취득하여 빅쿼리에 전달하여 분석 3
  7. BQML 테스트 구성 #1: 테이블 생성 1 2 3 4

    5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 CREATE TABLE `gde-project-aicloud.datayanolja.users` ( id INT64 NOT NULL, name STRING, age INT64, created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP(), updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP() ) OPTIONS( description="Stores user data including name and age" ); CREATE TABLE `gde-project-aicloud.datayanolja.interactions` ( id INT64 NOT NULL, user_id INT64, item_name STRING, created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP(), updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP(), ) OPTIONS( description="Records interactions between users and items, tracking when items are accessed or interacted with" );
  8. BQML 테스트 구성 #2: 유저 값 입력 1 2 3

    4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 INSERT INTO `gde-project-aicloud.datayanolja.users` (id, name, age, created_at, updated_at) VALUES (1, 'John Doe', 30, CURRENT_TIMESTAMP(), CURRENT_TIMESTAMP()), (2, 'Jane Smith', 25, CURRENT_TIMESTAMP(), CURRENT_TIMESTAMP()), (3, 'Alice Johnson', 35, CURRENT_TIMESTAMP(), CURRENT_TIMESTAMP()), (4, 'Carlos Ray', 28, CURRENT_TIMESTAMP(), CURRENT_TIMESTAMP()), (5, 'Elisa Miles', 22, CURRENT_TIMESTAMP(), CURRENT_TIMESTAMP()), (6, 'Marco Polo', 34, CURRENT_TIMESTAMP(), CURRENT_TIMESTAMP()), (7, 'Lucy Hale', 29, CURRENT_TIMESTAMP(), CURRENT_TIMESTAMP()), (8, 'Mike Ross', 31, CURRENT_TIMESTAMP(), CURRENT_TIMESTAMP()), (9, 'Rachel Green', 27, CURRENT_TIMESTAMP(), CURRENT_TIMESTAMP()), (10, 'Chandler Bing', 32, CURRENT_TIMESTAMP(), CURRENT_TIMESTAMP()), (11, 'Ross Geller', 36, CURRENT_TIMESTAMP(), CURRENT_TIMESTAMP()), (12, 'Monica Geller', 30, CURRENT_TIMESTAMP(), CURRENT_TIMESTAMP()), (13, 'Phoebe Buffay', 29, CURRENT_TIMESTAMP(), CURRENT_TIMESTAMP()), (14, 'Joseph Tribbiani', 26, CURRENT_TIMESTAMP(), CURRENT_TIMESTAMP()), (15, 'Derek Shepherd', 33, CURRENT_TIMESTAMP(), CURRENT_TIMESTAMP()), (16, 'Meredith Grey', 37, CURRENT_TIMESTAMP(), CURRENT_TIMESTAMP()), (17, 'Cristina Yang', 32, CURRENT_TIMESTAMP(), CURRENT_TIMESTAMP()), (18, 'Owen Hunt', 35, CURRENT_TIMESTAMP(), CURRENT_TIMESTAMP()), (19, 'Miranda Bailey', 30, CURRENT_TIMESTAMP(), CURRENT_TIMESTAMP()), (20, 'Richard Webber', 28, CURRENT_TIMESTAMP(), CURRENT_TIMESTAMP());
  9. BQML 테스트 구성 #3: 상호작용 값 입력 1 2 3

    4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 INSERT INTO `gde-project-aicloud.datayanolja.interactions` (id, user_id, item_name, created_at, updated_at) VALUES (1, 1, 'Sushi', CURRENT_TIMESTAMP(), CURRENT_TIMESTAMP()), (2, 2, 'Tiramisu', CURRENT_TIMESTAMP(), CURRENT_TIMESTAMP()), (3, 1, 'Pizza', CURRENT_TIMESTAMP(), CURRENT_TIMESTAMP()), (4, 3, 'Burger', CURRENT_TIMESTAMP(), CURRENT_TIMESTAMP()), (5, 4, 'Falafel', CURRENT_TIMESTAMP(), CURRENT_TIMESTAMP()), (6, 5, 'Pad Thai', CURRENT_TIMESTAMP(), CURRENT_TIMESTAMP()), (7, 6, 'Lasagna', CURRENT_TIMESTAMP(), CURRENT_TIMESTAMP()), (8, 7, 'Ramen', CURRENT_TIMESTAMP(), CURRENT_TIMESTAMP()), (9, 8, 'Taco', CURRENT_TIMESTAMP(), CURRENT_TIMESTAMP()), (10, 9, 'Burrito', CURRENT_TIMESTAMP(), CURRENT_TIMESTAMP()), (11, 10, 'Salad', CURRENT_TIMESTAMP(), CURRENT_TIMESTAMP()), (12, 11, 'Bagel', CURRENT_TIMESTAMP(), CURRENT_TIMESTAMP()), (13, 12, 'Curry', CURRENT_TIMESTAMP(), CURRENT_TIMESTAMP()), (14, 13, 'Dumplings', CURRENT_TIMESTAMP(), CURRENT_TIMESTAMP()), (15, 14, 'Chow Mein', CURRENT_TIMESTAMP(), CURRENT_TIMESTAMP()), (16, 15, 'Paella', CURRENT_TIMESTAMP(), CURRENT_TIMESTAMP()), (17, 16, 'Bibimbap', CURRENT_TIMESTAMP(), CURRENT_TIMESTAMP()), (18, 17, 'Ceviche', CURRENT_TIMESTAMP(), CURRENT_TIMESTAMP()), (19, 18, 'Poutine', CURRENT_TIMESTAMP(), CURRENT_TIMESTAMP()), (20, 19, 'Cannoli', CURRENT_TIMESTAMP(), CURRENT_TIMESTAMP())
  10. BQML 테스트 구성 #5: 연결 생성 1 2 3 4

    CREATE OR REPLACE MODEL `gde-project-aicloud.datayanolja.gemini_pro` REMOTE WITH CONNECTION `gde-project-aicloud.us.vertex_ai` OPTIONS (ENDPOINT = 'gemini-pro');
  11. BQML ML Generate Text 1 2 3 4 5 6

    7 8 9 10 11 12 13 14 15 16 17 18 19 SELECT * FROM ML.GENERATE_TEXT( MODEL datayanolja.gemini_pro, ( SELECT CONCAT( 'Recommend best category of the following user\n', 'Create a one-sentence message that includes the food you recommend to the user.\n', '[USER & Item]:\n', 'user name: ', users.name, '\n', 'user age: ', users.age, '\n', 'user last interacted_item', interactions.item_name, '\n---\n' ) AS prompt FROM datayanolja.interactions AS interactions INNER JOIN datayanolja.users AS users ON interactions.user_id = users.id ORDER BY interactions.created_at DESC ), STRUCT(0.9 AS temperature, 5 AS top_k, TRUE AS flatten_json_output));
  12. Function Calling 정의 1 2 3 4 5 6 7

    8 9 10 11 12 13 14 15 16 sql_query_func = FunctionDeclaration( name="sql_query", description="Get information from data in BigQuery using SQL queries", parameters={ "type": "object", "properties": { "query": { "type": "string", "description": "SQL query on a single line that will help give quantitative answers to the user's question when run on a BigQuery dataset and table. In the SQL query, always use the fully qualified dataset and table names.", } }, "required": [ "query", ], }, )
  13. Initializing Gemini with tool 1 2 3 4 5 6

    7 8 9 10 11 12 13 14 sql_query_tool = Tool( function_declarations=[ list_datasets_func, list_tables_func, get_table_func, sql_query_func, ], ) model = GenerativeModel( "gemini-1.0-pro", generation_config={"temperature": 0}, tools=[sql_query_tool], )
  14. 데이터 처리 업무의 변화 • 데이터 분석 업무는 전적으로 AI

    Assistant 기능을 활용하는 제품이 나올 것. • 빠른 데이터 활용을 위한 AI와 데이터 메타스토어 통합이 이루어질 것. • 데이터 카탈로그 관리는 더욱 중요한 주제로 자리잡을 것. • BI는 Generative AI를 포괄적으로 도입할 것. • Vector 관련 기능은 데이터 도구들에 기본 사항이 될 것.