সুইফট ফর টেনসরফ্লো মেশিন লার্নিং, কম্পাইলার, ডিফারেনশিয়াবল প্রোগ্রামিং, সিস্টেম ডিজাইন এবং এর বাইরেও সাম্প্রতিক গবেষণাকে অন্তর্ভুক্ত করে মেশিন লার্নিংয়ের জন্য পরবর্তী প্রজন্মের প্ল্যাটফর্মে একটি পরীক্ষা ছিল। এটি 2021 সালের ফেব্রুয়ারিতে আর্কাইভ করা হয়েছিল। এই প্রকল্পের কিছু উল্লেখযোগ্য অর্জনের মধ্যে রয়েছে:
- সুইফট ল্যাঙ্গুয়েজে ল্যাঙ্গুয়েজ-ইন্টিগ্রেটেড ডিফারেন্সিয়েবল প্রোগ্রামিং যোগ করা হয়েছে। এই কাজটি অফিসিয়াল সুইফট কম্পাইলারে চলতে থাকে।
- একটি পরিবর্তনযোগ্য-মান-অর্থতত্ত্ব-ভিত্তিক গভীর শিক্ষার API তৈরি করেছে৷
- গভীর শিক্ষার বিভিন্ন শাখা থেকে 30 টিরও বেশি মডেল সহ একটি মডেল বাগানের বিকাশকে উত্সাহিত করেছে৷
- 3D মোশন ট্র্যাকিং এবং তার বাইরের জন্য সম্ভাব্য গ্রাফিকাল মডেলগুলির সাথে গভীর শিক্ষাকে একত্রিত করে এমন অভিনব গবেষণা সক্ষম করা হয়েছে৷
- একটি GPU+CPU রানটাইম সমর্থনকারী pmap- এর একটি (n প্রায়) বিশুদ্ধ-সুইফ্ট প্রোটোটাইপ চালিত৷
- সক্রিয় বিকাশের অধীনে থাকা একাধিক ওপেন সোর্স পার্শ্ব প্রচেষ্টা বন্ধ করুন:
- পাইথনকিট : সুইফটের সাথে পাইথন ইন্টারঅপারেবিলিটি।
- swift-jupyter : জুপিটার নোটবুকের মধ্যে সুইফটের ব্যবহার সক্ষম করে।
- সুইফট-বেঞ্চমার্ক : সুইফট কোডের জন্য একটি শক্তিশালী বেঞ্চমার্কিং স্যুট প্রদান করে।
- অন্যান্য ওপেন সোর্স প্রচেষ্টা বন্ধ করুন:
- পেঙ্গুইন : সমান্তরাল প্রোগ্রামিং, ডেটা স্ট্রাকচার, গ্রাফ অ্যালগরিদম এবং আরও অনেক কিছু।
- টেনসর নিখুঁতভাবে ফিটিং : টেনসর আকৃতির অমিলগুলির স্ট্যাটিক বিশ্লেষণ।
- সুইফ্ট-বিবর্তন প্রস্তাব প্রস্তাবিত এবং বাস্তবায়িত:
এই সাইট আর আপডেট পাবেন না. API ডকুমেন্টেশন এবং বাইনারি ডাউনলোডগুলি ওপেন ডিজাইন রিভিউ মিটিং রেকর্ডিংয়ের পাশাপাশি অ্যাক্সেসযোগ্য হতে থাকবে।
সুইফট
সুইফ্ট হল একটি ওপেন সোর্স সাধারণ-উদ্দেশ্য প্রোগ্রামিং ভাষা, যার একটি বড় এবং ক্রমবর্ধমান ব্যবহারকারী বেস রয়েছে। আমরা সুইফটকে বেছে নিয়েছি কারণ এটির একটি উন্মুক্ত ভাষা নকশা প্রক্রিয়া রয়েছে এবং নির্দিষ্ট প্রযুক্তিগত কারণে " কেন সুইফট ফর টেনসরফ্লো " নথিতে বিশদ বিবরণ রয়েছে৷ আমরা অনুমান করি যে বেশিরভাগ পাঠক এটির সাথে অপরিচিত, তাই আমরা এখানে সংক্ষিপ্তভাবে এটি সম্পর্কে কিছু অতিরিক্ত গুরুত্বপূর্ণ বিষয়গুলি স্পর্শ করব৷
সুইফটের বিকাশ 2010 সালে শুরু হয়েছিল, এবং এর লক্ষ্য ছিল একাডেমিক নতুনত্বের জন্য বা ধর্মীয়ভাবে প্রোগ্রামিং পদ্ধতিগুলি প্রচার করার পরিবর্তে একটি সিস্টেমে প্রোগ্রামিং ভাষা ডিজাইনের সর্বোত্তম অনুশীলনগুলিকে একত্রিত করা। ফলস্বরূপ, এটি মাল্টি-প্যারাডাইম ডেভেলপমেন্টকে সমর্থন করে (যেমন কার্যকরী, OOP, জেনেরিক, পদ্ধতিগত, ইত্যাদি) সমস্ত একটি সিস্টেমে, এবং একাডেমিক ভাষা থেকে অনেক সুপরিচিত ধারণা নিয়ে আসে (যেমন প্যাটার্ন ম্যাচিং , বীজগাণিতিক ডেটা টাইপ এবং টাইপ ক্লাস) সামনের দিকে সুইফটে তাদের সমস্ত কোড পুনরায় লেখার জন্য বিকাশকারীদের দৃঢ়ভাবে উত্সাহিত করার পরিবর্তে, এটি ব্যবহারিকভাবে অন্যান্য ভাষার সাথে আন্তঃঅপারেবিলিটির উপর ফোকাস করে, যেমন, আপনাকে সরাসরি সি হেডার ফাইলগুলি আমদানি করতে এবং এফএফআই ছাড়াই সেগুলি ব্যবহার করার অনুমতি দেয় এবং (এখন) র্যাপার ছাড়া পাইথন API ব্যবহার করার ক্ষমতা। .
সহজে শেখা এবং ব্যবহার করার উপর ফোকাস সহ নিম্ন-স্তরের সিস্টেম প্রোগ্রামিং থেকে উচ্চ-স্তরের স্ক্রিপ্টিং পর্যন্ত বিস্তৃত করার সাহসী লক্ষ্য রয়েছে সুইফটের। যেহেতু সুইফ্টকে শিখতে এবং ব্যবহার করা সহজ কিন্তু শক্তিশালীও হতে হবে, এটি জটিলতার প্রগতিশীল প্রকাশের নীতির উপর নির্ভর করে, যা সেই জটিলতা থেকে উপকৃত ব্যক্তিদের উপর আক্রমনাত্মকভাবে জটিলতার ব্যয়কে প্রভাবিত করে। উচ্চ কার্যক্ষমতার সাথে মিলিত "স্ক্রিপ্টিং ভাষা অনুভূতি" মেশিন লার্নিংয়ের জন্য খুব দরকারী।
সুইফটের ডিজাইনের একটি চূড়ান্ত প্রাসঙ্গিক দিক হল যে সুইফ্টের বেশিরভাগ ভাষাই এর স্ট্যান্ডার্ড লাইব্রেরিতে বাস্তবায়িত হয়। Int এবং Bool- এর মতো "বিল্টিন" প্রকারগুলি আসলে স্ট্যান্ডার্ড লাইব্রেরিতে সংজ্ঞায়িত স্ট্রাকট যা ম্যাজিকের ধরন এবং ক্রিয়াকলাপগুলিকে মোড়ানো। যেমন, কখনও কখনও আমরা রসিকতা করি যে সুইফট কেবল "LLVM এর জন্য সিনট্যাকটিক চিনি"।
সুইফট সম্পর্কে আরও অনেক কিছু রয়েছে এবং অনলাইনে এক টন সামগ্রী উপলব্ধ। আপনি যদি সাধারণ সুইফ্ট প্রোগ্রামিং ধারণা সম্পর্কে আরও জানতে আগ্রহী হন তবে শুরু করার জন্য এখানে কয়েকটি লিঙ্ক রয়েছে:
- একটি সুইফট ট্যুর হল সুইফটের উচ্চ স্তরের সিনট্যাক্স এবং অনুভূতির একটি স্কিমযোগ্য সফর, এবং এটি বৃহত্তর "দ্য সুইফট প্রোগ্রামিং ল্যাঙ্গুয়েজ" বইয়ের অংশ।
- মান শব্দার্থবিদ্যা শক্তিশালী এবং সুইফট কোডে একটি গুরুত্বপূর্ণ ভূমিকা পালন করে, যেমনটি ব্যাখ্যা করা হয়েছে " সুইফটে মূল্যের প্রকারের সাথে আরও ভালো অ্যাপ তৈরি করা " [ YouTube ]।
- সুইফ্ট ক্লাসিক ওওপি সমর্থন করে, কিন্তু হাসকেল টাইপ সিস্টেম থেকে ধারণাগুলি অভিযোজিত করেছে। এটি " সুইফটে প্রোটোকল-ওরিয়েন্টেড প্রোগ্রামিং " [ YouTube ] এ ব্যাখ্যা করা হয়েছে।
একটি সতর্কতা: সুইফ্ট তার প্রাথমিক বছরগুলিতে দ্রুত বিকশিত হয়েছে, তাই আপনার সুইফট 3 (2016 সালে মুক্তি) এর আগে যেকোনো বিষয়ে সতর্ক হওয়া উচিত।
কেন TensorFlow জন্য সুইফ্ট?
সুইফট ফর টেনসরফ্লো হল মেশিন লার্নিং মডেল ডেভেলপ করার একটি নতুন উপায়। এটি আপনাকে সরাসরি সুইফ্ট প্রোগ্রামিং ল্যাঙ্গুয়েজে ইন্টিগ্রেটেড TensorFlow এর শক্তি দেয়। আমরা বিশ্বাস করি যে মেশিন লার্নিং দৃষ্টান্তগুলি এত গুরুত্বপূর্ণ যে তারা প্রথম-শ্রেণীর ভাষা এবং কম্পাইলার সমর্থনের যোগ্য।
মেশিন লার্নিংয়ের একটি মৌলিক আদিম হল গ্রেডিয়েন্ট-ভিত্তিক অপ্টিমাইজেশান: কম্পিউটিং ফাংশন ডেরিভেটিভস যাতে প্যারামিটারগুলি অপ্টিমাইজ করা যায়। TensorFlow-এর জন্য Swift-এর সাহায্যে, আপনি সহজেই gradient(of:)
এর মতো ডিফারেনশিয়াল অপারেটর ব্যবহার করে ফাংশনগুলিকে আলাদা করতে পারেন, অথবা মেথড gradient(in:)
কল করে একটি সম্পূর্ণ মডেলের ক্ষেত্রে পার্থক্য করতে পারেন। এই ডিফারেনসিয়েশান এপিআইগুলি শুধুমাত্র Tensor
-সম্পর্কিত ধারণাগুলির জন্য উপলব্ধ নয়—এগুলি Float
, Double
, SIMD ভেক্টর এবং আপনার নিজস্ব ডেটা স্ট্রাকচার সহ 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
ডেরিভেটিভের বাইরে, সুইফ্ট ফর টেনসরফ্লো প্রজেক্ট ব্যবহারকারীদের আরও বেশি উৎপাদনশীল করতে একটি পরিশীলিত টুলচেন নিয়ে আসে। আপনি একটি Jupyter নোটবুকে ইন্টারেক্টিভভাবে সুইফট চালাতে পারেন এবং একটি আধুনিক গভীর শিক্ষার লাইব্রেরির বিশাল API পৃষ্ঠকে অন্বেষণ করতে আপনাকে সাহায্য করার জন্য সহায়ক স্বয়ংসম্পূর্ণ পরামর্শ পেতে পারেন। আপনি কয়েক সেকেন্ডের মধ্যে আপনার ব্রাউজারে শুরু করতে পারেন!
TensorFlow-এর জন্য Swift-এ মাইগ্রেট করা সত্যিই সহজ, সুইফটের শক্তিশালী পাইথন ইন্টিগ্রেশনের জন্য ধন্যবাদ। আপনি ক্রমবর্ধমানভাবে আপনার পাইথন কোড স্থানান্তর করতে পারেন (বা আপনার প্রিয় পাইথন লাইব্রেরিগুলি ব্যবহার করা চালিয়ে যান), কারণ আপনি সহজেই আপনার প্রিয় পাইথন লাইব্রেরিটিকে একটি পরিচিত সিনট্যাক্সের সাথে কল করতে পারেন:
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!