मुख्य सामग्री पर जाएँ

Python और Snowflake Cortex AI के साथ मशीन लर्निंग: एक गाइड

Snowflake Cortex AI के बारे में जानें और समझें कि इसे LLMs और मशीन लर्निंग के लिए कैसे उपयोग किया जा सकता है।

AI के साथ खोजें

डेटा साइंस में AI के संभावित अनुप्रयोगों में से एक के रूप में AI मॉडल प्रशिक्षण तेजी से उभर रहा है। खास तौर पर, Snowflake Cortex AI का उपयोग करके मशीन लर्निंग की जा सकती है।

इस गाइड में, हम कवर करेंगे कि Snowflake Cortex AI क्या है और यह क्या कर सकता है। साथ ही, हम Python और कुछ SQL की मदद से मशीन लर्निंग और AI शुरू करने पर एक साधारण ट्यूटोरियल भी देंगे। यदि आप Snowflake में नए हैं, तो हमारी Introduction to Snowflake course देखें ताकि आप गति पकड़ सकें।

Snowflake Cortex AI क्या है?

Snowflake Cortex AI, Snowflake AI Data Cloud में एक शक्तिशाली सुविधा है, जिसे Snowflake वातावरण के भीतर सीधे मशीन लर्निंग (ML) संचालन को आसान बनाने के लिए डिज़ाइन किया गया है। 

यह Python ML मॉडलों को Snowflake डेटा के साथ सहजता से एकीकृत करने की अनुमति देता है, जिससे संगठन क्लाउड इन्फ्रास्ट्रक्चर का लाभ उठाते हुए बड़े डेटासेट से इनसाइट्स, भविष्यवाणियाँ, और उन्नत एनालिटिक्स प्राप्त कर सकते हैं।

snowflake cortex ai

स्रोत: Snowflake Cortex AI

Snowflake Cortex AI की प्रमुख विशेषताएँ:

  • Cortex Analyst: एक सेल्फ-सर्व एनालिटिक्स फीचर जो उपयोगकर्ताओं को प्राकृतिक भाषा का उपयोग करके डेटा से इंटरेक्ट करने देता है।
  • Cortex Search: एंटरप्राइज़ दस्तावेज़ों के भीतर डेटा खोजने के लिए बनाया गया उन्नत, AI-आधारित सर्च सिस्टम।
  • LLMs और एम्बेड मॉडल: Snowflake Arctic, Meta Llama 3, और Mistral जैसे शक्तिशाली LLMs से सर्वरलेस आर्किटेक्चर पर कनेक्शन।
  • Cortex Fine-Tuning: कस्टम छोटे मॉडलों को उच्च लागत के बिना LLM-जैसा प्रदर्शन देने में सक्षम बनाता है। 

Snowflake Cortex दो मुख्य भागों से बना है—LLM फ़ंक्शंस और ML फ़ंक्शंस।

LLM फ़ंक्शंस के लिए, आपके पास हैं:

  1. Summarize
  2. Translate
  3. Complete
  4. Extract Answer
  5. Sentiment
  6. Embed Text

हम नीचे प्रत्येक फ़ंक्शन को और विस्तार से देखेंगे।

ML फ़ंक्शंस के लिए, आपके पास हैं:

  1. Anomaly detection: आपके डेटा में विसंगतियों का स्वतः पता लगाता है और उपयोगकर्ताओं को अलर्ट करता है।
  2. Forecasting: ऐतिहासिक डेटा के आधार पर भविष्यवाणियाँ करने के लिए मशीन लर्निंग एल्गोरिदम का उपयोग करता है।
  3. Classification: डेटा को अलग-अलग श्रेणियों या समूहों में वर्गीकृत करता है।
  4. Top insights:  समय के साथ मेट्रिक्स के मूल्यों में उतार-चढ़ाव के कारणों की पहचान करता है।

जानना चाहते हैं कि Snowflake और उसके फ़ंक्शंस कहाँ सीखें? हमारे शुरुआती Snowflake Tutorial और Snowflake सर्टिफिकेशन गाइड आपकी मदद करेंगे।

Python के साथ Snowflake Cortex AI क्यों उपयोग करें?

आइए अब इन टूल्स को एक साथ उपयोग करने के फ़ायदों को देखें।

Snowflake Cortex AI और Python को साथ लाने के फायदे

Snowflake Cortex AI के कुछ प्रमुख फायदे:

  • Python इंटीग्रेशन: यह आपको Snowflake के कंप्यूटिंग वातावरण में सीधे Python ML मॉडल चलाने की अनुमति देता है।
  • मॉडल होस्टिंग: मॉडलों को इन्फरेंस के लिए होस्ट और सर्व किया जा सकता है।
  • डेटा मूवमेंट नहीं: क्योंकि मॉडल Snowflake वातावरण के भीतर चलते हैं, बड़े डेटासेट को बाहरी सर्वरों पर ले जाने की आवश्यकता नहीं होती।

उपयोग के मामले और अनुप्रयोग

पहले, Snowflake Cortex AI उन व्यवसायों के लिए उपयुक्त है जो संसाधनों में बड़े निवेश के बिना अपनी डेटा साइंस क्षमताओं में सुधार करना चाहते हैं। इसके नो-कोड वातावरण के साथ, गैर-तकनीकी उपयोगकर्ता भी आसानी से ML मॉडल विकसित और तैनात कर सकते हैं।

यह विशेष रूप से छोटे व्यवसायों या स्टार्टअप्स के लिए उपयोगी है, जिनके पास डेटा वैज्ञानिकों की टीम रखने या महंगे LLMs में निवेश करने का बजट नहीं होता।

दूसरे, Python को Snowflake के कंप्यूटिंग वातावरण में एकीकृत करके, उपयोगकर्ता Python की उपलब्ध मशीन लर्निंग लाइब्रेरी और टूल्स के विशाल संग्रह का लाभ उठा सकते हैं। इसका मतलब है कि वे नई प्रोग्रामिंग भाषाएँ सीखे बिना अधिक उन्नत और सटीक मॉडल बना सकते हैं।

अंत में, जिन कंपनियों ने पहले से ही Snowflake वातावरण को अपनाया है, वे Cortex AI के पूर्ण लाभ उठा पाएंगी क्योंकि यह उनके मौजूदा डेटा वेयरहाउस के साथ सहजता से एकीकृत हो जाता है, जिससे अतिरिक्त इन्फ्रास्ट्रक्चर या डेटा माइग्रेशन की आवश्यकता समाप्त हो जाती है।

Snowflake Cortex AI के साथ, कंपनियाँ आसानी से और कुशलतापूर्वक अपने व्यावसायिक प्रक्रियाओं में मशीन लर्निंग लागू कर सकती हैं। 

Snowflake Cortex AI के साथ शुरुआत करना

इस ट्यूटोरियल में, हम Python और Snowflake Cortex AI का उपयोग करके एक मशीन लर्निंग पाइपलाइन सेटअप करने की प्रक्रिया से गुजरेंगे।

पूर्वापेक्षाएँ

Snowflake Cortex AI के साथ ML पर काम शुरू करने से पहले, सुनिश्चित करें कि आप निम्नलिखित आवश्यकताओं को पूरा करते हैं:

Snowflake खाता सेट करना

सबसे पहले, आपको एक Snowflake इंस्टेंस की आवश्यकता होगी जहाँ आपका डेटा स्टोर और प्रोसेस होता है। आप Snowflake वेबसाइट पर साइन अप कर सकते हैं।

साइन-अप फ़ॉर्म में, अपने सभी खाता विवरण भरें और दूसरी पेज पर निम्नलिखित चयन करने का ध्यान रखें। इस ट्यूटोरियल के लिए Standard संस्करण चुनें और सरलता व पुनरुत्पादन के लिए Amazon Web Services चुनें। सर्वर के लिए, US West (Oregon) चुनें ताकि LLM फ़ंक्शंस का सबसे अच्छा चयन उपलब्ध हो।

snowflake खाता सेट करना

इन विकल्पों का चयन करने के बाद, Get Started पर क्लिक करें ताकि आपको एक्टिवेशन ईमेल मिल जाए। अपना खाता सक्रिय करने के लिए अपने ईमेल पर जाएँ और आपका Snowflake खाता उपयोग के लिए तैयार है।

सॉफ़्टवेयर आवश्यकताएँ

अगले चरण में, आपको सॉफ्टवेयर के लिए कुछ अन्य आवश्यकताओं को भी पूरा करना होगा।

यहाँ रखने के लिए चीज़ों की एक सरल सूची है:

  • Python पर्यावरण: Python 3.x जिसमें आवश्यक पैकेज इंस्टॉल हों।
  • Snowflake: अपने Python पर्यावरण को अपने Snowflake खाते से जोड़ने के लिए टर्मिनल से Snowflake इंस्टॉल करना होगा।
  • VS Code: Python के लिए उपयुक्त एक इंटीग्रेटेड डेवलपमेंट एन्वायरनमेंट (IDE) का उपयोग किया जा सकता है। अन्य विकल्पों में DataLab, Google Colab, या Jupyter Notebooks शामिल हैं।

किसी भी विश्लेषण को शुरू करने से पहले, सभी संबंधित पैकेज इंस्टॉल करें ताकि आपका कोडिंग वातावरण तैयार हो।

आवश्यक पैकेज इंस्टॉल करने के लिए, आप pip का उपयोग कर सकते हैं:

pip install snowflake
pip install python-dotenv

लाइब्रेरी इंस्टॉल करने के बाद, शुरू करने के लिए आपको अपना वर्किंग फ़ोल्डर और फ़ाइलें सेट करनी होंगी।

मैंने Cortex AI Tutorial नाम का एक फ़ोल्डर बनाया है और उसमें एक नया .env फ़ाइल शामिल की है, जिसमें निम्न जानकारी है:

SNOWFLAKE_ACCOUNT = "<YOUR_ACCOUNT>" # eg. XXXX-XXXX

SNOWFLAKE_USER = "<YOUR_USER>" 

SNOWFLAKE_USER_PASSWORD = "<YOUR_PASSWORD>"

अपनी खाता जानकारी दर्ज करने के बाद, फ़ाइल सहेजें और उसी फ़ोल्डर में एक Python या Jupyter Notebook फ़ाइल बनाएँ।

Snowflake से कनेक्ट करना

अब जब सब सेट हो गया है, तो अपने Python वातावरण को Snowflake से कनेक्ट करें।

शुरू करने के लिए, अपनी Python फ़ाइल खोलें और सभी आवश्यक लाइब्रेरी इम्पोर्ट करें। ऐसा करने के लिए कोड यहाँ है:

import os
from dotenv import load_dotenv
from snowflake.snowpark import Session
from snowflake.cortex import Summarize, Complete, ExtractAnswer, Sentiment, Translate, EmbedText768

इसके बाद, आपको पहले सहेजी गई .env फ़ाइल में सहेजे गए वेरिएबल्स को लोड करना होगा। इससे Snowflake को आपके खाता क्रेडेंशियल्स मिलेंगे ताकि वह लॉग इन कर सके और अपने फ़ंक्शंस का उपयोग कर सके।

# Loads environment variables from .env
load_dotenv()
connection_params = {
    "account": os.environ["SNOWFLAKE_ACCOUNT"],
    "user": os.environ["SNOWFLAKE_USER"],
    "password": os.environ["SNOWFLAKE_USER_PASSWORD"],
}

वेरिएबल्स का उपयोग करके कनेक्ट करने के बाद, आपको एक Snowflake सेशन सेट करना होगा। यही ऑब्जेक्ट आपकी सभी रिक्वेस्ट हैंडल करेगा। 

# Creates a Snowflake session

snowflake_session = Session.builder.configs(connection_params).create()

Snowflake Cortex AI LLM फ़ंक्शंस

Cortex AI के भीतर LLM फ़ंक्शंस उपयोगकर्ताओं को अपने स्वयं के AI मॉडल विकसित किए बिना LLMs की क्षमता का लाभ उठाने में सक्षम बनाते हैं।

ये फ़ंक्शंस औसत एनालिटिक्स उपयोगकर्ता को कुछ बुनियादी कार्यों के माध्यम से AI-संचालित विश्लेषण प्रदान करने में मदद करते हैं।

यहाँ वे फ़ंक्शंस हैं जो Snowflake Cortex में हैं:

1. SUMMARIZE

Summarize फ़ंक्शन, दिए गए इनपुट के आधार पर डेटा का सारांश बनाने के लिए उपयोग होता है।

यह LLMs का उपयोग करके प्रमुख जानकारी की पहचान करता है और उसे संक्षिप्त रूप में प्रस्तुत करता है।

उदाहरण के लिए, यदि आपके पास एक लंबा टेक्स्ट दस्तावेज़ है और आप उसकी सामग्री का त्वरित अवलोकन चाहते हैं, तो आप Summarize फ़ंक्शन का उपयोग करके एक संक्षिप्त सारांश प्राप्त कर सकते हैं जो महत्वपूर्ण बिंदुओं को समेटता है। यह समय बचाता है और बड़े पैमाने के डेटा का जल्दी विश्लेषण करने की अनुमति देता है।

इस लेख को लिखते समय इनपुट भाषा फिलहाल अंग्रेज़ी तक सीमित है।

संदर्भ के लिए नीचे दिया कोड देखें:

# Defines the Summarize LLM Function
def summarize(user_text):
    summary = Summarize(text=user_text, session=snowflake_session)
    return summary

2. TRANSLATE

Translate फ़ंक्शन एक भाषा से दूसरी भाषा में टेक्स्ट बदलने के लिए उपयोग होता है।

यह टेक्स्ट का सटीक अनुवाद करने के लिए मशीन लर्निंग एल्गोरिदम और सांख्यिकीय मॉडलों का उपयोग करता है।

यह तब उपयोगी हो सकता है जब आप अलग-अलग भाषाओं में डेटा या दस्तावेज़ों के साथ काम कर रहे हों, क्योंकि यह संचार और समझ को आसान बनाता है।

उदाहरण के लिए, यदि आपके पास स्पैनिश में लिखा एक रिपोर्ट है और आपको इसे अंग्रेज़ी-भाषी दर्शकों को प्रस्तुत करना है, तो आप Translate फ़ंक्शन का उपयोग करके टेक्स्ट को जल्दी से बदल सकते हैं। इससे मैन्युअल अनुवाद की आवश्यकता समाप्त हो जाती है और समय बचता है।

संदर्भ के लिए नीचे दिया कोड देखें:

# Defines the Translate LLM Function
def translate(user_text):
    translation = Translate(
        text=user_text, from_language="en", to_language="ko", session=snowflake_session
    )
    return translation

3. COMPLETE

Complete फ़ंक्शन एक सर्वगुण संपन्न फ़ंक्शन है जिसे विशिष्ट कार्यों को पूरा करने के लिए उपयोग किया जा सकता है। यह वाक्य प्रॉम्प्ट्स के उपयोग के माध्यम से किया जाता है, जो AI मॉडल को आवश्यक जानकारी प्रदान करने के लिए मार्गदर्शन करते हैं ताकि कोई कार्य निष्पादित किया जा सके।

संदर्भ के लिए नीचे दिया कोड देखें:

# Defines the Complete LLM Function
def complete(user_text):
    completion = Complete(
        model="snowflake-arctic",
        prompt=f"Provide 3 relevant keywords from the following text: {user_text}",
        session=snowflake_session,
    )
    return completion

4. EXTRACT_ANSWER

Extract Answer फ़ंक्शन, मॉडल को दिए गए प्रश्न के आधार पर उत्तर देता है। इनपुट अंग्रेज़ी में स्ट्रिंग या JSON फ़ॉर्मेट में होना चाहिए।

संदर्भ के लिए नीचे दिया कोड देखें:

# Defines the Extract Answer LLM Function
def extract_answer(user_text):
    answer = ExtractAnswer(
        from_text=user_text,
        question="What are some reasons why young adult South Koreans love coffee?",
        session=snowflake_session,
    )
    return answer

5. SENTIMENT

Sentiment फ़ंक्शन दिए गए टेक्स्ट की भावनाओं के आधार पर एक मात्रात्मक संख्या प्रदान करता है। यह -1 से 1 तक का मान देता है। -1 सबसे नकारात्मक, 1 सबसे सकारात्मक, और 0 के आसपास के मान तटस्थ होते हैं।

संदर्भ के लिए नीचे दिया कोड देखें:

# Defines the Sentiment LLM Function
def sentiment(user_text):
    sentiment = Sentiment(text=user_text, session=snowflake_session)
    return sentiment

6. EMBED_TEXT

Embed Text फ़ंक्शंस में EMBED_TEXT_768 और EMBED_TEXT_1024 फ़ंक्शंस शामिल हैं। ये क्रमशः 768 और 1024 डायमेंशन के वेक्टर एम्बेडिंग बनाते हैं।

EMBED_TEXT_768 फ़ंक्शंस पर संदर्भ के लिए नीचे दिया कोड देखें:

# Defines the Embed Text LLM Function
def embed_text(user_text):
    embed_text = EmbedText768(text=user_text, model='snowflake-arctic-embed-m', session=snowflake_session)
    return embed_text

अब आइए उन्हें सबको एक मुख्य फ़ंक्शन में साथ रखें और परिणाम देखने के लिए किसी सैंपल टेक्स्ट पर चलाएँ।

मैंने मॉडल में इनपुट के लिए नीचे दिखाए अनुसार एक साधारण, छोटा टेक्स्ट उपयोग किया है:

snowflake llm फ़ंक्शंस सैंपल टेक्स्ट इनपुट

कॉपी-पेस्ट की सुविधा के लिए, यहाँ टेक्स्ट है:

user_text = """
        Young adults in South Korea are embracing coffee as a blend of energy, comfort, and culture. 
        Coffee isn't just about staying awake during demanding studies or work; it’s a cherished part of daily routines. 
        With South Korea's bustling café culture, coffee shops have become popular spaces for socializing, studying, 
        or just taking a break from the fast-paced city life. 
        The diversity of flavors and trendy cafés also offers a unique, 
        stylish experience that fits right into the evolving lifestyle of young adults, 
        who seek both connection and personal moments in the midst of it all.
    """

अब, कोड चलाएँ। इसमें कुछ ही सेकंड लगने चाहिए।

यहाँ परिणाम हैं:

snowflake cortex llm आउटपुट

जैसा कि आप देख सकते हैं, AI ने हमारे दिए गए टेक्स्ट के आधार पर हमें सभी आवश्यक परिणाम दिए हैं। इसने सारांश दिया, मेरे टेक्स्ट का कोरियन में अनुवाद किया, मेरे टेक्स्ट के आधार पर तीन कीवर्ड दिए, और मेरे प्रश्नों के आधार पर कुछ उत्तर भी प्रदान किए।

Snowflake Cortex AI मशीन लर्निंग फ़ंक्शंस

Cortex AI में ऐसे ML फ़ंक्शंस भी हैं जो केवल SQL का उपयोग करके चल सकते हैं। यहाँ इसके कई फ़ंक्शंस दिए गए हैं।

1. Anomaly detection

विसंगति का पता लगाना आपके डेटा के अपेक्षित व्यवहार से मेल न खाने वाले असामान्य पैटर्न की पहचान के लिए आवश्यक है। Snowflake, ग्रेडिएंट बूस्टिंग मशीन (GBM) पर आधारित बिल्ट-इन मशीन लर्निंग फ़ंक्शंस प्रदान करके विसंगति का पता लगाने को सरल बनाता है, जो आपको अपने डेटासेट्स में आउटलिएर्स को जल्दी से पहचानने देता है।

विसंगति का पता लगाना विशेष रूप से इन कार्यों के लिए उपयोगी है:

  • ट्रांज़ैक्शन डेटा में धोखाधड़ी का पता लगाना।
  • असामान्य उपयोगकर्ता व्यवहार की पहचान करना।
  • सिस्टम प्रदर्शन में विसंगतियों के लिए टाइम सीरीज़ डेटा की निगरानी करना।

विसंगति का पता लगाने के लिए, Snowflake क्लास ANOMALY_DETECTION (SNOWFLAKE.ML) का उपयोग किया जा सकता है। यह कमांड एक विसंगति पहचान मॉडल ऑब्जेक्ट बनाता है। यह चरण आपके प्रशिक्षण डेटा पर मॉडल को फिट करता है।

इसे इस तरह उपयोग कर सकते हैं:

CREATE [ OR REPLACE ] SNOWFLAKE.ML.ANOMALY_DETECTION <model_name>(
  INPUT_DATA => <reference_to_training_data>,
  [ SERIES_COLNAME => '<series_column_name>', ]
  TIMESTAMP_COLNAME => '<timestamp_column_name>',
  TARGET_COLNAME => '<target_column_name>',
  LABEL_COLNAME => '<label_column_name>',
  [ CONFIG_OBJECT => <config_object> ]
)
[ [ WITH ] TAG ( <tag_name> = '<tag_value>' [ , <tag_name> = '<tag_value>' , ... ] ) ]
[ COMMENT = '<string_literal>' ]

एक बार ऑब्जेक्ट बना लेने के बाद, आप <model_name>!DETECT_ANOMALIES मेथड का उपयोग करके विसंगति का पता लगा सकते हैं,

<model_name>!DETECT_ANOMALIES(
  INPUT_DATA => <reference_to_data_to_analyze>,
  TIMESTAMP_COLNAME => '<timestamp_column_name>',
  TARGET_COLNAME => '<target_column_name>',
  [ CONFIG_OBJECT => <configuration_object>, ]
  [ SERIES_COLNAME => '<series_column_name>' ]
)

यह वास्तविक प्रेडिक्शन चरण है, जहाँ इस मेथड का उपयोग करके आउटलिएर्स का पता लगाया जाएगा।

यहाँ एक उदाहरण है कि डेटासेट का उपयोग करके विसंगति का पता कैसे लगाया जा सकता है।

सबसे पहले, बाएँ टैब में Data पर जाएँ, फिर Add Data, और उसके बाद Load data into a Table पर जाएँ ताकि आप एक डेटाबेस बना सकें।

snowflake डेटाबेस जोड़ना

उभरने वाली विंडो में, + Database पर क्लिक करें और अपने डेटाबेस का नाम दें। Create पर क्लिक करें, फिर मुख्य पॉपअप विंडो में Cancel पर क्लिक करें।

नया snowflake डेटाबेस बनाना

यह एक खाली डेटाबेस बना देगा, जिस पर आप काम कर सकते हैं।

नीचे दिए उदाहरण Snowflake दस्तावेज़ीकरण से अनुकूलित किए गए हैं।

विसंगति पहचान शुरू करने के लिए, एक नए SQL वर्कशीट पर जाएँ, अपने नए डेटाबेस को डेटा स्रोत के रूप में चुनें, और टेबल बनाने के लिए निम्न कोड पेस्ट करें:

CREATE OR REPLACE TABLE historical_sales_data (

  store_id NUMBER, item VARCHAR, date TIMESTAMP_NTZ, sales FLOAT, label BOOLEAN,

  temperature NUMBER, humidity FLOAT, holiday VARCHAR);

// Creating the dataset
INSERT INTO historical_sales_data VALUES
  (1, 'jacket', to_timestamp_ntz('2020-01-01'), 2.0, false, 50, 0.3, 'new year'),
  (1, 'jacket', to_timestamp_ntz('2020-01-02'), 3.0, false, 52, 0.3, null),
  (1, 'jacket', to_timestamp_ntz('2020-01-03'), 5.0, false, 54, 0.2, null),
  (1, 'jacket', to_timestamp_ntz('2020-01-04'), 30.0, true, 54, 0.3, null),
  (1, 'jacket', to_timestamp_ntz('2020-01-05'), 8.0, false, 55, 0.2, null),
  (1, 'jacket', to_timestamp_ntz('2020-01-06'), 6.0, false, 55, 0.2, null),
  (1, 'jacket', to_timestamp_ntz('2020-01-07'), 4.6, false, 55, 0.2, null),
  (1, 'jacket', to_timestamp_ntz('2020-01-08'), 2.7, false, 55, 0.2, null),
  (1, 'jacket', to_timestamp_ntz('2020-01-09'), 8.6, false, 55, 0.2, null),
  (1, 'jacket', to_timestamp_ntz('2020-01-10'), 9.2, false, 55, 0.2, null),
  (1, 'jacket', to_timestamp_ntz('2020-01-11'), 4.6, false, 55, 0.2, null),
  (1, 'jacket', to_timestamp_ntz('2020-01-12'), 7.0, false, 55, 0.2, null),
  (1, 'jacket', to_timestamp_ntz('2020-01-13'), 3.6, false, 55, 0.2, null),
  (1, 'jacket', to_timestamp_ntz('2020-01-14'), 8.0, false, 55, 0.2, null),
  (2, 'umbrella', to_timestamp_ntz('2020-01-01'), 3.4, false, 50, 0.3, 'new year'),
  (2, 'umbrella', to_timestamp_ntz('2020-01-02'), 5.0, false, 52, 0.3, null),
  (2, 'umbrella', to_timestamp_ntz('2020-01-03'), 4.0, false, 54, 0.2, null),
  (2, 'umbrella', to_timestamp_ntz('2020-01-04'), 5.4, false, 54, 0.3, null),
  (2, 'umbrella', to_timestamp_ntz('2020-01-05'), 3.7, false, 55, 0.2, null),
  (2, 'umbrella', to_timestamp_ntz('2020-01-06'), 3.2, false, 55, 0.2, null),
  (2, 'umbrella', to_timestamp_ntz('2020-01-07'), 3.2, false, 55, 0.2, null),
  (2, 'umbrella', to_timestamp_ntz('2020-01-08'), 5.6, false, 55, 0.2, null),
  (2, 'umbrella', to_timestamp_ntz('2020-01-09'), 7.3, false, 55, 0.2, null),
  (2, 'umbrella', to_timestamp_ntz('2020-01-10'), 8.2, false, 55, 0.2, null),
  (2, 'umbrella', to_timestamp_ntz('2020-01-11'), 3.7, false, 55, 0.2, null),
  (2, 'umbrella', to_timestamp_ntz('2020-01-12'), 5.7, false, 55, 0.2, null),
  (2, 'umbrella', to_timestamp_ntz('2020-01-13'), 6.3, false, 55, 0.2, null),
  (2, 'umbrella', to_timestamp_ntz('2020-01-14'), 2.9, false, 55, 0.2, null);

आपका कोड एक ऐसे SQL वर्कशीट में जाना चाहिए जो इस तरह दिखता है:

विसंगति पहचान SQL वर्कशीट

इसके बाद निम्न स्टेटमेंट्स से new_sales_data नाम की टेबल बनती है।

// Creating a new table and adding training data
CREATE OR REPLACE TABLE new_sales_data (
  store_id NUMBER, item VARCHAR, date TIMESTAMP_NTZ, sales FLOAT,
  temperature NUMBER, humidity FLOAT, holiday VARCHAR);
INSERT INTO new_sales_data VALUES
  (1, 'jacket', to_timestamp_ntz('2020-01-16'), 6.0, 52, 0.3, null),
  (1, 'jacket', to_timestamp_ntz('2020-01-17'), 20.0, 53, 0.3, null),
  (2, 'umbrella', to_timestamp_ntz('2020-01-16'), 3.0, 52, 0.3, null),
  (2, 'umbrella', to_timestamp_ntz('2020-01-17'), 70.0, 53, 0.3, null);

अब, विसंगति पहचान मॉडल बनाएँ:

// Creating anomaly detection model object
CREATE OR REPLACE VIEW view_with_training_data
  AS SELECT date, sales FROM historical_sales_data
    WHERE store_id=1 AND item='jacket';
CREATE OR REPLACE SNOWFLAKE.ML.ANOMALY_DETECTION basic_model(
  INPUT_DATA => TABLE(view_with_training_data),
  TIMESTAMP_COLNAME => 'date',
  TARGET_COLNAME => 'sales',
  LABEL_COLNAME => '');

यह एक परिणाम बनाएगा जो दर्शाता है कि नीचे दिखाए अनुसार एक मॉडल बना दिया गया है।

विसंगति पहचान मॉडल

अगला, कुछ डिटेक्शन करने के लिए ऑब्जेक्ट मॉडल का उपयोग करें।

// Perform anomaly detection
CREATE OR REPLACE VIEW view_with_data_to_analyze
  AS SELECT date, sales FROM new_sales_data
    WHERE store_id=1 and item='jacket';
CALL basic_model!DETECT_ANOMALIES(
  INPUT_DATA => TABLE(view_with_data_to_analyze),
  TIMESTAMP_COLNAME =>'date',
  TARGET_COLNAME => 'sales'
);

डिटेक्शन का आउटपुट इस प्रकार है:

विसंगति पहचान आउटपुट परिणाम

2. Classification

Classification का अर्थ है डेटा को पूर्व-परिभाषित श्रेणियों में बाँटना। Snowflake के साथ, आप सीधे Snowflake के भीतर से डेटा को वर्गीकृत कर सकते हैं, जिससे डेटा को बाहरी ML वातावरण में निर्यात करने की आवश्यकता समाप्त हो जाती है। 

snowflake क्लासिफिकेशन मॉडल

शुरू करने के लिए, निम्न कोड का उपयोग करके एक सैंपल डेटासेट बनाएँ:

// Creating binary class dataset
CREATE OR REPLACE TABLE training_purchase_data AS (
    SELECT
        CAST(UNIFORM(0, 4, RANDOM()) AS VARCHAR) AS user_interest_score,
        UNIFORM(0, 3, RANDOM()) AS user_rating,
        FALSE AS label,
        'not_interested' AS class
    FROM TABLE(GENERATOR(rowCount => 100))
    UNION ALL
    SELECT
        CAST(UNIFORM(4, 7, RANDOM()) AS VARCHAR) AS user_interest_score,
        UNIFORM(3, 7, RANDOM()) AS user_rating,
        FALSE AS label,
        'add_to_wishlist' AS class
    FROM TABLE(GENERATOR(rowCount => 100))
    UNION ALL
    SELECT
        CAST(UNIFORM(7, 10, RANDOM()) AS VARCHAR) AS user_interest_score,
        UNIFORM(7, 10, RANDOM()) AS user_rating,
        TRUE AS label,
        'purchase' AS class
    FROM TABLE(GENERATOR(rowCount => 100))
);
CREATE OR REPLACE table prediction_purchase_data AS (
    SELECT
        CAST(UNIFORM(0, 4, RANDOM()) AS VARCHAR) AS user_interest_score,
        UNIFORM(0, 3, RANDOM()) AS user_rating
    FROM TABLE(GENERATOR(rowCount => 100))
    UNION ALL
    SELECT
        CAST(UNIFORM(4, 7, RANDOM()) AS VARCHAR) AS user_interest_score,
        UNIFORM(3, 7, RANDOM()) AS user_rating
    FROM TABLE(GENERATOR(rowCount => 100))
    UNION ALL
    SELECT
        CAST(UNIFORM(7, 10, RANDOM()) AS VARCHAR) AS user_interest_score,
        UNIFORM(7, 10, RANDOM()) AS user_rating
    FROM TABLE(GENERATOR(rowCount => 100))
);

ट्रेनिंग डेटा के उद्देश्य से, एक नया व्यू बनाएँ।

// Creating view for training data
CREATE OR REPLACE view binary_classification_view AS
    SELECT user_interest_score, user_rating, label
FROM training_purchase_data;
SELECT * FROM binary_classification_view ORDER BY RANDOM(42) LIMIT 5;

यह व्यू निम्न परिणाम आउटपुट करना चाहिए:

क्लासिफिकेशन ट्रेनिंग डेटा

अगला, अपने ट्रेनिंग डेटा के आधार पर मॉडल को प्रशिक्षित करें:

// Training a binary classification model
CREATE OR REPLACE SNOWFLAKE.ML.CLASSIFICATION model_binary(
    INPUT_DATA => SYSTEM$REFERENCE('view', 'binary_classification_view'),
    TARGET_COLNAME => 'label'
);

क्लासिफिकेशन करने के लिए, PREDICT मेथड का उपयोग करें:

// Performing prediction using PREDICT method
SELECT model_binary!PREDICT(INPUT_DATA => {*})
    AS prediction FROM prediction_purchase_data;

प्रेडिक्शन इस तरह दिखता है:

क्लासिफिकेशन फ़ंक्शन परिणाम

इसे अच्छी तरह फॉर्मेट करने के लिए, यह SQL स्टेटमेंट उपयोग करें:

// Formatting SQL predictions
SELECT *, model_binary!PREDICT(INPUT_DATA => {*})
    AS predictions FROM prediction_purchase_data;

आपको प्रेडिक्शंस के लिए यह सुथरा आउटपुट फ़ॉर्मेट मिलना चाहिए:

क्लासिफिकेशन फ़ंक्शन परिणाम फॉर्मेटेड

3. Top insights

Top Insights, समय-श्रृंखला विश्लेषण के माध्यम से समय के साथ आपके मेट्रिक्स में उतार-चढ़ाव की तलाश के लिए एक मॉनिटरिंग टूल है। एक निर्णय वृक्ष मॉडल का उपयोग करते हुए, Top Insights किसी विशेष मेट्रिक में वृद्धि या कमी के सबसे महत्वपूर्ण कारकों की पहचान कर सकता है।

snowflake टॉप इनसाइट्स मॉडल

आइए इस फ़ंक्शन का उपयोग करके एक समय-श्रृंखला विश्लेषण का उदाहरण देखें।

सबसे पहले, एक डेटासेट बनाएँ:

// Creating dataset
CREATE OR REPLACE TABLE input_table(
  ds DATE, metric NUMBER, dim_country VARCHAR, dim_vertical VARCHAR);
INSERT INTO input_table
  SELECT
    DATEADD(day, SEQ4(), DATE_FROM_PARTS(2020, 4, 1)) AS ds,
    UNIFORM(1, 10, RANDOM()) AS metric,
    'usa' AS dim_country,
    'tech' AS dim_vertical
  FROM TABLE(GENERATOR(ROWCOUNT => 365));
INSERT INTO input_table
  SELECT
    DATEADD(day, SEQ4(), DATE_FROM_PARTS(2020, 4, 1)) AS ds,
    UNIFORM(1, 10, RANDOM()) AS metric,
    'usa' AS dim_country,
    'auto' AS dim_vertical
  FROM TABLE(GENERATOR(ROWCOUNT => 365));
INSERT INTO input_table
  SELECT
    DATEADD(day, seq4(), DATE_FROM_PARTS(2020, 4, 1)) AS ds,
    UNIFORM(1, 10, RANDOM()) AS metric,
    'usa' AS dim_country,
    'fashion' AS dim_vertical
  FROM TABLE(GENERATOR(ROWCOUNT => 365));
INSERT INTO input_table
  SELECT
    DATEADD(day, SEQ4(), DATE_FROM_PARTS(2020, 4, 1)) AS ds,
    UNIFORM(1, 10, RANDOM()) AS metric,
    'usa' AS dim_country,
    'finance' AS dim_vertical
  FROM TABLE(GENERATOR(ROWCOUNT => 365));
INSERT INTO input_table
  SELECT
    DATEADD(day, SEQ4(), DATE_FROM_PARTS(2020, 4, 1)) AS ds,
    UNIFORM(1, 10, RANDOM()) AS metric,
    'canada' AS dim_country,
    'fashion' AS dim_vertical
  FROM TABLE(GENERATOR(ROWCOUNT => 365));
INSERT INTO input_table
  SELECT
    DATEADD(day, SEQ4(), DATE_FROM_PARTS(2020, 4, 1)) AS ds,
    UNIFORM(1, 10, RANDOM()) AS metric,
    'canada' AS dim_country,
    'finance' AS dim_vertical
  FROM TABLE(GENERATOR(ROWCOUNT => 365));
INSERT INTO input_table
  SELECT
    DATEADD(day, SEQ4(), DATE_FROM_PARTS(2020, 4, 1)) AS ds,
    UNIFORM(1, 10, RANDOM()) AS metric,
    'canada' AS dim_country,
    'tech' AS dim_vertical
  FROM TABLE(GENERATOR(ROWCOUNT => 365));
INSERT INTO input_table
  SELECT
    DATEADD(day, SEQ4(), DATE_FROM_PARTS(2020, 4, 1)) AS ds,
    UNIFORM(1, 10, RANDOM()) AS metric,
    'canada' AS dim_country,
    'auto' AS dim_vertical
  FROM TABLE(GENERATOR(ROWCOUNT => 365));
INSERT INTO input_table
  SELECT
    DATEADD(day, SEQ4(), DATE_FROM_PARTS(2020, 4, 1)) AS ds,
    UNIFORM(1, 10, RANDOM()) AS metric,
    'france' AS dim_country,
    'fashion' AS dim_vertical
  FROM TABLE(GENERATOR(ROWCOUNT => 365));
INSERT INTO input_table
  SELECT
    DATEADD(day, SEQ4(), DATE_FROM_PARTS(2020, 4, 1)) AS ds,
    UNIFORM(1, 10, RANDOM()) AS metric,
    'france' AS dim_country,
    'finance' AS dim_vertical
  FROM TABLE(GENERATOR(ROWCOUNT => 365));
INSERT INTO input_table
  SELECT
    DATEADD(day, SEQ4(), DATE_FROM_PARTS(2020, 4, 1)) AS ds,
    UNIFORM(1, 10, RANDOM()) AS metric,
    'france' AS dim_country,
    'tech' AS dim_vertical
  FROM TABLE(GENERATOR(ROWCOUNT => 365));
INSERT INTO input_table
  SELECT
    DATEADD(day, SEQ4(), DATE_FROM_PARTS(2020, 4, 1)) AS ds,
    UNIFORM(1, 10, RANDOM()) AS metric,
    'france' AS dim_country,
    'auto' AS dim_vertical
  FROM TABLE(GENERATOR(ROWCOUNT => 365));
-- Data for the test group
INSERT INTO input_table
  SELECT
    DATEADD(day, SEQ4(), DATE_FROM_PARTS(2020, 8, 1)) AS ds,
    UNIFORM(300, 320, RANDOM()) AS metric,
    'usa' AS dim_country,
    'auto' AS dim_vertica
  FROM TABLE(GENERATOR(ROWCOUNT => 365));
INSERT INTO input_table
  SELECT
    DATEADD(day, SEQ4(), DATE_FROM_PARTS(2020, 8, 1))  AS ds,
    UNIFORM(400, 420, RANDOM()) AS metric,
    'usa' AS dim_country,
    'finance' AS dim_vertical
  FROM TABLE(GENERATOR(ROWCOUNT => 365));
// Creating new view and adding labels to timestamps
CREATE OR REPLACE VIEW input_view AS (
    SELECT
        metric,
        dim_country as country,
        dim_vertical as vertical,
        ds >= '2021-01-01' AS label
    FROM input_table
);

इसके बाद, प्रेडिक्शन के लिए हमें मॉडल ऑब्जेक्ट बनाना होगा। यह GET_DRIVERS मेथड तक पहुँचने के लिए ज़रूरी है।

// Creating the model
CREATE OR REPLACE SNOWFLAKE.ML.TOP_INSIGHTS my_insights_model()

अंत में, प्रेडिक्शन के लिए, GET_DRIVERS मेथड कॉल करें।

// Performing prediction using GET_DRIVERS method
CALL my_insights_model!GET_DRIVERS(
  INPUT_DATA => TABLE(input_view),
  LABEL_COLNAME => 'label',
  METRIC_COLNAME => 'metric'
);

आपको निम्न परिणाम मिलने चाहिए:

टॉप इनसाइट्स फ़ंक्शन परिणाम

4. Forecasting

फ़ोरकास्टिंग तब महत्वपूर्ण होती है जब आपको ऐतिहासिक डेटा के आधार पर भविष्य के मानों की भविष्यवाणी करनी हो। चाहे वह बिक्री पूर्वानुमान हो, ऊर्जा खपत की भविष्यवाणी हो, या वेब ट्रैफ़िक का पूर्वानुमान हो, Snowflake के बिल्ट-इन फ़ंक्शंस इन कार्यों को बहुत सरल बना देते हैं।

snowflake फ़ोरकास्टिंग मॉडल

अपने उदाहरण के लिए, एक सिंगल सीरीज़ पर कुछ फ़ोरकास्टिंग करें:

// Creating the dataset
CREATE OR REPLACE TABLE sales_data (store_id NUMBER, item VARCHAR, date TIMESTAMP_NTZ,
  sales FLOAT, temperature NUMBER, humidity FLOAT, holiday VARCHAR);
INSERT INTO sales_data VALUES
  (1, 'jacket', TO_TIMESTAMP_NTZ('2020-01-01'), 2.0, 50, 0.3, 'new year'),
  (1, 'jacket', TO_TIMESTAMP_NTZ('2020-01-02'), 3.0, 52, 0.3, NULL),
  (1, 'jacket', TO_TIMESTAMP_NTZ('2020-01-03'), 4.0, 54, 0.2, NULL),
  (1, 'jacket', TO_TIMESTAMP_NTZ('2020-01-04'), 5.0, 54, 0.3, NULL),
  (1, 'jacket', TO_TIMESTAMP_NTZ('2020-01-05'), 6.0, 55, 0.2, NULL),
  (1, 'jacket', TO_TIMESTAMP_NTZ('2020-01-06'), 7.0, 55, 0.2, NULL),
  (1, 'jacket', TO_TIMESTAMP_NTZ('2020-01-07'), 8.0, 55, 0.2, NULL),
  (1, 'jacket', TO_TIMESTAMP_NTZ('2020-01-08'), 9.0, 55, 0.2, NULL),
  (1, 'jacket', TO_TIMESTAMP_NTZ('2020-01-09'), 10.0, 55, 0.2, NULL),
  (1, 'jacket', TO_TIMESTAMP_NTZ('2020-01-10'), 11.0, 55, 0.2, NULL),
  (1, 'jacket', TO_TIMESTAMP_NTZ('2020-01-11'), 12.0, 55, 0.2, NULL),
  (1, 'jacket', TO_TIMESTAMP_NTZ('2020-01-12'), 13.0, 55, 0.2, NULL),
  (2, 'umbrella', TO_TIMESTAMP_NTZ('2020-01-01'), 2.0, 50, 0.3, 'new year'),
  (2, 'umbrella', TO_TIMESTAMP_NTZ('2020-01-02'), 3.0, 52, 0.3, NULL),
  (2, 'umbrella', TO_TIMESTAMP_NTZ('2020-01-03'), 4.0, 54, 0.2, NULL),
  (2, 'umbrella', TO_TIMESTAMP_NTZ('2020-01-04'), 5.0, 54, 0.3, NULL),
  (2, 'umbrella', TO_TIMESTAMP_NTZ('2020-01-05'), 6.0, 55, 0.2, NULL),
  (2, 'umbrella', TO_TIMESTAMP_NTZ('2020-01-06'), 7.0, 55, 0.2, NULL),
  (2, 'umbrella', TO_TIMESTAMP_NTZ('2020-01-07'), 8.0, 55, 0.2, NULL),
  (2, 'umbrella', TO_TIMESTAMP_NTZ('2020-01-08'), 9.0, 55, 0.2, NULL),
  (2, 'umbrella', TO_TIMESTAMP_NTZ('2020-01-09'), 10.0, 55, 0.2, NULL),
  (2, 'umbrella', TO_TIMESTAMP_NTZ('2020-01-10'), 11.0, 55, 0.2, NULL),
  (2, 'umbrella', TO_TIMESTAMP_NTZ('2020-01-11'), 12.0, 55, 0.2, NULL),
  (2, 'umbrella', TO_TIMESTAMP_NTZ('2020-01-12'), 13.0, 55, 0.2, NULL);
-- Future values for additional columns (features)
CREATE OR REPLACE TABLE future_features (store_id NUMBER, item VARCHAR,
  date TIMESTAMP_NTZ, temperature NUMBER, humidity FLOAT, holiday VARCHAR);
INSERT INTO future_features VALUES
  (1, 'jacket', TO_TIMESTAMP_NTZ('2020-01-13'), 52, 0.3, NULL),
  (1, 'jacket', TO_TIMESTAMP_NTZ('2020-01-14'), 53, 0.3, NULL),
  (2, 'umbrella', TO_TIMESTAMP_NTZ('2020-01-13'), 52, 0.3, NULL),
  (2, 'umbrella', TO_TIMESTAMP_NTZ('2020-01-14'), 53, 0.3, NULL);

अब, डेटासेट से ट्रेनिंग डेटा को अलग करें।

// Creating a view for training data
CREATE OR REPLACE VIEW v1 AS SELECT date, sales
  FROM sales_data WHERE store_id=1 AND item='jacket';
SELECT * FROM v1;

फ़ोरकास्टिंग शुरू करने से पहले, आपको चुने गए ट्रेनिंग डेटा के आधार पर अपना मॉडल प्रशिक्षित करना होगा।

इसे आप इस तरह कर सकते हैं:

// Training a forecasting model
CREATE SNOWFLAKE.ML.FORECAST model1(
  INPUT_DATA => TABLE(v1),
  TIMESTAMP_COLNAME => 'date',
  TARGET_COLNAME => 'sales'
);

अंत में, फ़ोरकास्ट के लिए, आप प्रेडिक्शन चरण करने हेतु FORECAST मेथड कॉल कर सकते हैं।

// Performing the forecast by calling the FORECAST method
call model1!FORECAST(FORECASTING_PERIODS => 5);

यह हमारी फ़ोरकास्टिंग का परिणामी आउटपुट है।

फ़ोरकास्टिंग फ़ंक्शन परिणाम

Snowflake में ML मॉडलों की मॉनिटरिंग

मॉडल के प्रदर्शन की मॉनिटरिंग, Snowflake में थर्ड-पार्टी इंटीग्रेशन (जैसे Tableau) का उपयोग करके डैशबोर्ड बनाकर या Snowflake लॉग्स को क्वेरी करके की जा सकती है। सटीकता (accuracy), प्रीसिशन और रिकॉल जैसे कुछ उपयोगी मेट्रिक्स मॉडलों की ट्रैकिंग के लिए उपयोग किए जा सकते हैं।

निष्कर्ष

Snowflake Cortex AI, Snowflake प्लेटफ़ॉर्म से मॉडलों के सहज एकीकरण को सक्षम करके मशीन लर्निंग को सरल बनाता है। इस ट्यूटोरियल में आपने Snowflake Cortex AI और Snowflake Cortex ML फ़ंक्शंस का उपयोग करना सीखा।

यह समाधान Snowflake की स्केलेबिलिटी और Python की लचीलेपन का लाभ उठाता है, जिससे यह उन संगठनों के लिए आदर्श बनता है जो डेटा को क्लाउड से बाहर ले जाए बिना मशीन लर्निंग लागू करना चाहते हैं।

Snowflake पर और संसाधन ढूँढ रहे हैं? आपको हमारा Snowflake Beginner Tutorial और हमारा Snowpark गाइड पसंद आएगा। यदि आप कुछ अधिक व्यापक खोज रहे हैं, तो Introduction to Snowflake कोर्स आपके लिए सही हो सकता है।

Python और Snowflake Cortex के साथ मशीन लर्निंग FAQs

क्या मशीन लर्निंग और AI के लिए Python अच्छा है?

PyTorch, TensorFlow, और Keras जैसी शक्तिशाली लाइब्रेरी के कारण Python, मशीन लर्निंग और AI के लिए उपयुक्त है। Snowflake AI और ML फ़ंक्शंस तक भी Python के माध्यम से पहुँचा जा सकता है।

AI और मशीन लर्निंग के लिए Python का उपयोग कैसे करें?

Python का उपयोग बिल्ट-इन लाइब्रेरीज़ के माध्यम से या Snowflake LLM और ML फ़ंक्शंस के जरिए AI और मशीन लर्निंग के लिए किया जा सकता है।

Snowflake Cortex के ML-आधारित फ़ंक्शंस का उपयोग कैसे करें?

Snowflake Cortex के ML-आधारित फ़ंक्शंस का उपयोग SQL के माध्यम से प्रत्येक फ़ंक्शन के संबंधित मेथड्स को कॉल करके किया जा सकता है।

Snowflake AI मॉडल क्या हैं?

Snowflake AI मॉडल वे बड़े भाषा मॉडल हैं जो Snowflake Cortex और उसके संबंधित फ़ंक्शंस को शक्ति देते हैं।

Snowflake मशीन लर्निंग के कुछ उदाहरण क्या हैं?

Snowflake मशीन लर्निंग फ़ंक्शंस का उपयोग विभिन्न अनुप्रयोगों में किया जा सकता है, जैसे विसंगति पहचान, फ़ोरकास्टिंग, टॉप इनसाइट्स प्राप्त करना, और क्लासिफिकेशन।

Austin Chia

लेखक

Austin Chia

मैं ऑस्टिन हूँ—एक ब्लॉगर और टेक राइटर, जिसके पास स्वास्थ्य सेवा क्षेत्र में डेटा वैज्ञानिक और डेटा विश्लेषक के रूप में वर्षों का अनुभव है। जीवविज्ञान की पृष्ठभूमि से अपनी टेक यात्रा शुरू करने के बाद, अब मैं अपने टेक ब्लॉग के माध्यम से दूसरों को भी यही बदलाव करने में मदद करता हूँ। प्रौद्योगिकी के प्रति मेरे जुनून ने मुझे दर्जनों SaaS कंपनियों के लिए लिखने के लिए प्रेरित किया है, जहाँ मैं अपनी अनुभूतियाँ साझा करता हूँ और दूसरों को प्रेरित करता हूँ।

विषय