टेन्सरफ्लो के लिए स्विफ्ट मशीन लर्निंग के लिए अगली पीढ़ी के प्लेटफॉर्म में एक प्रयोग था, जिसमें मशीन लर्निंग, कंपाइलर्स, डिफरेंशियल प्रोग्रामिंग, सिस्टम डिजाइन और उससे आगे के नवीनतम शोध को शामिल किया गया था। इसे फरवरी 2021 में संग्रहीत किया गया था। इस परियोजना की कुछ महत्वपूर्ण उपलब्धियों में शामिल हैं:
- स्विफ्ट भाषा में भाषा-एकीकृत भिन्न प्रोग्रामिंग को जोड़ा गया। यह कार्य आधिकारिक स्विफ्ट कंपाइलर में जारी है।
- एक परिवर्तनशील-मूल्य-शब्दार्थ-उन्मुख गहन शिक्षण एपीआई विकसित किया
- विभिन्न गहन शिक्षण विषयों से 30 से अधिक मॉडलों के साथ एक मॉडल उद्यान के विकास को बढ़ावा दिया।
- सक्षम उपन्यास अनुसंधान जो 3डी मोशन ट्रैकिंग और उससे आगे के लिए गहन शिक्षण को संभाव्य ग्राफिकल मॉडल के साथ जोड़ता है ।
- pmap को सपोर्ट करने वाले GPU+CPU रनटाइम का एक (लगभग) शुद्ध-स्विफ्ट प्रोटोटाइप संचालित।
- कई ओपन सोर्स साइड प्रयासों को बंद कर दिया गया है जो सक्रिय विकास के तहत जारी हैं:
- PythonKit : स्विफ्ट के साथ Python इंटरऑपरेबिलिटी।
- स्विफ्ट-ज्यूपिटर : ज्यूपिटर नोटबुक में स्विफ्ट के उपयोग को सक्षम बनाता है।
- स्विफ्ट-बेंचमार्क : स्विफ्ट कोड के लिए एक मजबूत बेंचमार्किंग सूट प्रदान करता है।
- कई अन्य खुले स्रोत प्रयासों को बंद कर दिया:
- पेंगुइन : समानांतर प्रोग्रामिंग, डेटा संरचनाएं, ग्राफ एल्गोरिदम, और बहुत कुछ।
- टेन्सर की पूरी तरह से फिटिंग : टेन्सर आकार के बेमेल का स्थैतिक विश्लेषण।
- तीव्र-विकास प्रस्ताव प्रस्तावित और कार्यान्वित:
इस साइट को आगे अपडेट प्राप्त नहीं होंगे. एपीआई दस्तावेज़ीकरण और बाइनरी डाउनलोड के साथ-साथ ओपन डिज़ाइन रिव्यू मीटिंग रिकॉर्डिंग भी सुलभ रहेंगी।
तीव्र
स्विफ्ट एक ओपन सोर्स सामान्य प्रयोजन प्रोग्रामिंग भाषा है, जिसका उपयोगकर्ता आधार बड़ा और बढ़ता हुआ है। हमने स्विफ्ट को चुना क्योंकि इसमें एक खुली भाषा डिजाइन प्रक्रिया है और विशिष्ट तकनीकी कारणों का विवरण " टेन्सरफ्लो के लिए स्विफ्ट क्यों " दस्तावेज़ में दिया गया है। हम मानते हैं कि अधिकांश पाठक इससे अपरिचित हैं, इसलिए हम यहां इसके बारे में कुछ अतिरिक्त महत्वपूर्ण बातों पर संक्षेप में चर्चा करेंगे।
स्विफ्ट का विकास 2010 में शुरू हुआ, और इसका उद्देश्य अकादमिक नवीनता की कोशिश करने या धार्मिक रूप से प्रोग्रामिंग पद्धतियों का प्रचार करने के बजाय प्रोग्रामिंग भाषा डिजाइन में सर्वोत्तम प्रथाओं को एक प्रणाली में लाना था। परिणामस्वरूप, यह एक ही प्रणाली में बहु-प्रतिमान विकास (उदाहरण के लिए कार्यात्मक, ओओपी, सामान्य, प्रक्रियात्मक, आदि) का समर्थन करता है, और अकादमिक भाषाओं से कई प्रसिद्ध अवधारणाओं को लाता है (उदाहरण के लिए पैटर्न मिलान , बीजगणितीय डेटा प्रकार और प्रकार कक्षाएं) सबसे आगे. डेवलपर्स को स्विफ्ट में अपने सभी कोड को फिर से लिखने के लिए दृढ़ता से प्रोत्साहित करने के बजाय, यह व्यावहारिक रूप से अन्य भाषाओं के साथ इंटरऑपरेबिलिटी पर ध्यान केंद्रित करता है, उदाहरण के लिए, आपको सी हेडर फ़ाइलों को सीधे आयात करने और उन्हें एफएफआई के बिना उपयोग करने की अनुमति देता है और (अब) रैपर के बिना पायथन एपीआई का उपयोग करने की क्षमता देता है। .
स्विफ्ट के पास सीखने और उपयोग में आसान होने पर ध्यान देने के साथ निम्न-स्तरीय सिस्टम प्रोग्रामिंग से उच्च-स्तरीय स्क्रिप्टिंग तक विस्तार करने का साहसिक लक्ष्य है। क्योंकि स्विफ्ट को सीखना और उपयोग करना आसान होने के साथ-साथ शक्तिशाली भी होना चाहिए, यह जटिलता के प्रगतिशील प्रकटीकरण के सिद्धांत पर निर्भर करता है, जो उस जटिलता से लाभान्वित होने वाले लोगों पर आक्रामक रूप से जटिलता की लागत डालता है। उच्च प्रदर्शन के साथ संयुक्त "स्क्रिप्टिंग भाषा अनुभव" मशीन सीखने के लिए बहुत उपयोगी है।
स्विफ्ट के डिज़ाइन का एक अंतिम प्रासंगिक पहलू यह है कि स्विफ्ट भाषा का अधिकांश भाग वास्तव में इसकी मानक लाइब्रेरी में लागू किया गया है। इंट और बूल जैसे "बिल्टिन" प्रकार वास्तव में मानक लाइब्रेरी में परिभाषित केवल संरचनाएं हैं जो जादुई प्रकारों और संचालन को लपेटते हैं। वैसे, कभी-कभी हम मज़ाक करते हैं कि स्विफ्ट सिर्फ "एलएलवीएम के लिए सिंटैक्टिक शुगर" है।
स्विफ्ट के बारे में और भी बहुत कुछ अच्छा है और ढेर सारी सामग्री ऑनलाइन उपलब्ध है। यदि आप सामान्य स्विफ्ट प्रोग्रामिंग अवधारणाओं के बारे में अधिक जानने में रुचि रखते हैं, तो आरंभ करने के लिए यहां कुछ लिंक दिए गए हैं:
- स्विफ्ट टूर स्विफ्ट के उच्च स्तरीय वाक्यविन्यास और अनुभव का एक स्किमेबल टूर है, और बड़ी "द स्विफ्ट प्रोग्रामिंग लैंग्वेज" पुस्तक का हिस्सा है।
- मूल्य शब्दार्थ शक्तिशाली हैं और स्विफ्ट कोड में एक महत्वपूर्ण भूमिका निभाते हैं, जैसा कि " स्विफ्ट में मूल्य प्रकारों के साथ बेहतर ऐप्स का निर्माण " [ यूट्यूब ] में बताया गया है।
- स्विफ्ट क्लासिक OOP का समर्थन करता है, लेकिन उसने हास्केल प्रकार प्रणाली से विचारों को अनुकूलित किया है। इसे " प्रोटोकॉल-ओरिएंटेड प्रोग्रामिंग इन स्विफ्ट " [ यूट्यूब ] में समझाया गया है।
एक चेतावनी: स्विफ्ट अपने शुरुआती वर्षों में तेजी से विकसित हुई, इसलिए आपको स्विफ्ट 3 (2016 में रिलीज़) से पहले किसी भी चीज़ से सावधान रहना चाहिए।
TensorFlow के लिए स्विफ्ट क्यों?
TensorFlow के लिए स्विफ्ट मशीन लर्निंग मॉडल विकसित करने का एक नया तरीका है। यह आपको सीधे स्विफ्ट प्रोग्रामिंग भाषा में एकीकृत TensorFlow की शक्ति प्रदान करता है। हमारा मानना है कि मशीन लर्निंग प्रतिमान इतने महत्वपूर्ण हैं कि वे प्रथम श्रेणी की भाषा और कंपाइलर समर्थन के पात्र हैं।
मशीन लर्निंग में एक मौलिक आदिम ग्रेडिएंट-आधारित अनुकूलन है: मापदंडों को अनुकूलित करने के लिए फ़ंक्शन डेरिवेटिव की गणना करना। TensorFlow के लिए स्विफ्ट के साथ, आप gradient(of:)
जैसे विभेदक ऑपरेटरों का उपयोग करके फ़ंक्शन को आसानी से अलग कर सकते हैं, या gradient(in:)
विधि को कॉल करके पूरे मॉडल के संबंध में अंतर कर सकते हैं। ये विभेदन एपीआई केवल Tensor
-संबंधित अवधारणाओं के लिए उपलब्ध नहीं हैं - वे सभी प्रकारों के लिए सामान्यीकृत हैं जो Float
, Double
, सिमडी वैक्टर और आपकी अपनी डेटा संरचनाओं सहित Differentiable
प्रोटोकॉल के अनुरूप हैं।
// Custom differentiable type.
struct Model: Differentiable {
var w: Float
var b: Float
func applied(to input: Float) -> Float {
return w * input + b
}
}
// Differentiate using `gradient(at:_:in:)`.
let model = Model(w: 4, b: 3)
let input: Float = 2
let (𝛁model, 𝛁input) = gradient(at: model, input) { model, input in
model.applied(to: input)
}
print(𝛁model) // Model.TangentVector(w: 2.0, b: 1.0)
print(𝛁input) // 4.0
डेरिवेटिव से परे, स्विफ्ट फॉर टेन्सरफ्लो प्रोजेक्ट उपयोगकर्ताओं को अधिक उत्पादक बनाने के लिए एक परिष्कृत टूलचेन के साथ आता है। आप ज्यूपिटर नोटबुक में स्विफ्ट को इंटरैक्टिव रूप से चला सकते हैं, और आधुनिक गहन शिक्षण लाइब्रेरी की विशाल एपीआई सतह का पता लगाने में मदद के लिए उपयोगी स्वत: पूर्ण सुझाव प्राप्त कर सकते हैं। आप सीधे अपने ब्राउज़र में कुछ ही सेकंड में आरंभ कर सकते हैं!
स्विफ्ट के शक्तिशाली पायथन एकीकरण की बदौलत TensorFlow के लिए स्विफ्ट में माइग्रेट करना वास्तव में आसान है। आप अपने पायथन कोड को धीरे-धीरे माइग्रेट कर सकते हैं (या अपने पसंदीदा पायथन लाइब्रेरी का उपयोग जारी रख सकते हैं), क्योंकि आप आसानी से अपनी पसंदीदा पायथन लाइब्रेरी को एक परिचित सिंटैक्स के साथ कॉल कर सकते हैं:
import TensorFlow
import Python
let np = Python.import("numpy")
let array = np.arange(100).reshape(10, 10) // Create a 10x10 numpy array.
let tensor = Tensor<Float>(numpy: array) // Seamless integration!