۲۹ شهریور ۱۴۰۳

Techboy

اخبار و اطلاعات روز تکنولوژی

درک DiskANN، پایه و اساس Copilot Runtime

مایکروسافت در حال افزودن یک فهرست جستجوی برداری سریع به ویندوز است. این برای مدل های سریع و محلی زبان کوچک مانند Phi Silica ساخته شده است.

مایکروسافت در حال افزودن یک فهرست جستجوی برداری سریع به ویندوز است. این برای مدل های سریع و محلی زبان کوچک مانند Phi Silica ساخته شده است.

یکی از اجزای کلیدی پلتفرم توسعه هوش مصنوعی مایکروسافت Copilot Runtime edge برای ویندوز یک فناوری جستجوی برداری جدید، DiskANN (نزدیکترین همسایگان با شتاب دیسک) است. بر اساس یک پروژه تحقیقاتی طولانی مدت مایکروسافت، DiskANN راهی برای ایجاد و مدیریت نمایه های برداری در داخل برنامه های شما است. از ترکیبی از حافظه داخلی و ذخیره سازی دیسک برای نگاشت یک نمودار برداری کوانتیزه شده در حافظه به کمک گراف با دقت بالا روی دیسک استفاده می کند.

DiskANN چیست؟

اگرچه این یک تطابق دقیق نیست، می‌توانید DiskANN را به عنوان معادل شاخص برداری ابزارهایی مانند SQLite در نظر بگیرید. به کد شما اضافه شده است، و به شما راهی ساده برای جستجو در یک نمایه برداری متشکل از جاسازی های معنایی از یک مدل زبان کوچک (SLM) مانند Phi Silica در Copilot Runtime می دهد.

درک این نکته مهم است که DiskANN یک پایگاه داده نیست. این مجموعه ای از الگوریتم هایی است که به عنوان ابزاری برای افزودن نمایه های برداری به فروشگاه های دیگر ارائه می شود که برای پشتیبانی از جستجوهای برداری طراحی نشده اند. این آن را به یک همراه ایده‌آل برای فروشگاه‌های تعبیه‌شده دیگر، چه رابطه‌ای یا یک ذخیره‌سازی ارزش کلید NoSQL، تبدیل می‌کند.

نیاز به حافظه داخلی و ذخیره سازی دیسک به توضیح برخی از مشخصات سخت افزاری برای رایانه های شخصی Copilot+، با دو برابر نیاز حافظه پایه قبلی ویندوز و همچنین SSDهای بزرگتر و سریعتر کمک می کند. به طور مفید، نیاز به CPU کمتری نسبت به سایر الگوریتم‌های جستجوی برداری وجود دارد، با پیاده‌سازی در مقیاس در سرویس‌های Azure که تنها به ۵٪ از روش‌های سنتی استفاده از CPU نیاز دارد.

برای داده هایی که نمایه می شوند به یک فروشگاه جداگانه نیاز دارید. داشتن فروشگاه‌های مجزا برای فهرست‌ها و منبع جاسازی‌های شما مشکلاتی دارد. اگر با اطلاعات شناسایی شخصی یا سایر داده‌های تنظیم‌شده کار می‌کنید، نمی‌توانید از رمزگذاری داده‌های منبع غافل شوید. این می‌تواند به درخواست‌ها سربار اضافه کند، اما جالب است که مایکروسافت روی محفظه‌های امن مبتنی بر نرم‌افزار کار می‌کند که هم می‌توانند داده‌ها را در حالت استراحت و هم در حال استفاده رمزگذاری کنند و خطر نشت PII یا دستکاری درخواست‌ها توسط بدافزار را کاهش دهند.

DiskANN اجرای یک جستجوی تقریبی نزدیکترین همسایه، با استفاده از نمایه گراف Vamana است. این برای کار با داده‌هایی طراحی شده است که مرتباً تغییر می‌کنند، که آن را به ابزاری مفید برای برنامه‌های هوش مصنوعی عامل مانند که نیاز به فهرست‌بندی فایل‌های محلی یا داده‌های نگهداری شده در سرویس‌هایی مانند Microsoft 365، مانند ایمیل یا چت‌های تیمی دارند، تبدیل می‌کند.

شروع به کار با diskannpy

یک شروع سریع مفید به شکل پیاده‌سازی Python diskannpy است. این کلاس هایی را برای نمایه سازی و جستجو فراهم می کند. گزینه ای برای استفاده از کتابخانه های پایتون تجزیه و تحلیل عددی مانند NumPy برای ساخت و کار با ایندکس ها وجود دارد و آن را به ابزارهای علم داده موجود متصل می کند. همچنین به شما این امکان را می دهد که از نوت بوک های Jupyter در کد ویژوال استودیو برای آزمایش ایندکس ها قبل از ساخت برنامه های کاربردی در اطراف آنها استفاده کنید. اتخاذ یک رویکرد مبتنی بر نوت بوک برای نمونه سازی به شما امکان می دهد عناصر یک برنامه مبتنی بر SLM را به طور جداگانه توسعه دهید و نتایج را بین سلول ها ارسال کنید.

با استفاده از یکی از دو کلاس Index Builder برای ایجاد یک نمایه برداری ترکیبی یا درون حافظه از محتویات یک آرایه NumPy یا یک فایل برداری با فرمت DiskANN شروع کنید. کتابخانه diskannpy حاوی ابزارهایی است که می‌توانند این فایل را از یک آرایه بسازند، که روشی مفید برای افزودن سریع جاسازی‌ها به فهرست است. فایل های فهرست در یک فهرست مشخص ذخیره می شوند و آماده جستجو هستند. سایر ویژگی‌ها به شما امکان می‌دهند فهرست‌ها را به‌روزرسانی کنید و از عملیات پویا پشتیبانی کنید.

جستجو مجدداً یک کلاس ساده است، با یک آرایه پرس و جو شامل جاسازی جستجو، همراه با پارامترهایی که تعداد همسایگانی که باید برگردانده شوند، همراه با پیچیدگی لیست را تعیین می کند. ارائه فهرست بزرگتر زمان بیشتری می برد، اما دقیق تر خواهد بود. مبادله بین دقت و تأخیر، اجرای آزمایش‌ها را قبل از التزام به کد نهایی ضروری می‌سازد. گزینه‌های دیگر به شما امکان می‌دهند عملکرد را با دسته‌بندی پرس‌و‌جوها بهبود ببخشید. شما می توانید پیچیدگی شاخص و همچنین نوع متریک فاصله مورد استفاده برای جستجوها را تعریف کنید. مقادیر بزرگتر برای پیچیدگی و درجه نمودار بهتر است، اما ایجاد نمایه های حاصل بیشتر طول می کشد.

Diskannpy ابزار مفیدی برای یادگیری نحوه استفاده از DiskANN است. این احتمال وجود دارد که با تکامل Copilot Runtime، مایکروسافت مجموعه‌ای از بسته‌بندی‌ها را ارائه دهد که انتزاعی سطح بالایی را ارائه می‌کند، دقیقاً مانند آنچه که برای Cosmos DB ارائه می‌کند. در اعلان اولیه Copilot Runtime، با اشاره به Vector Embeddings API که برای ساخت برنامه‌های مبتنی بر نسل تقویت‌شده بازیابی (RAG) استفاده می‌شود. این برای یک به‌روزرسانی آینده برای Copilot Runtime برنامه‌ریزی شده است.

چرا DiskANN؟

با کاوش در مخزن GitHub برای پروژه، به راحتی می توان فهمید که چرا مایکروسافت DiskANN را به عنوان یکی از فناوری های اساسی در Copilot Runtime، زیرا هم برای SSD و هم برای عملیات درون حافظه بهینه شده است و می تواند یک رویکرد ترکیبی ارائه دهد که داده های زیادی را به لحاظ اقتصادی نمایه می کند. مقاله اولیه DiskANN از تحقیقات مایکروسافت نشان می‌دهد که یک شاخص ترکیبی SSD/RAM می‌تواند پنج تا ده برابر بردارهای مشابه الگوریتم خالص درون حافظه را فهرست‌بندی کند، که می‌تواند حدود یک میلیارد بردار را با دقت جستجوی بالا و با تأخیر ۵ میلی‌ثانیه آدرس‌دهی کند. /p>

البته در عمل، برنامه SLM میزبان لبه به احتمال زیاد نیازی به ایندکس کردن داده های زیادی ندارد، بنابراین عملکرد و دقت باید بالاتر باشد.

 اگر در حال ساختن یک برنامه کاربردی هوش مصنوعی معنایی در یک SLM هستید، باید روی توان عملیاتی تمرکز کنید و از تعداد کمی نشانه برای هر عملیات استفاده کنید. اگر بتوانید جستجوی مورد نیاز برای ایجاد اعلان‌های پایه برای یک برنامه RAG را در سریع‌ترین زمان ممکن حفظ کنید، احتمال اینکه کاربران ناراضی منتظر پاسخی ساده باشند را کاهش می‌دهید.

با بارگیری یک نمایه در حافظه در هنگام راه‌اندازی، می‌توانید جستجوها را به گونه‌ای ساده کنید که برنامه شما تنها زمانی نیاز به دسترسی به داده‌های منبع داشته باشد که برای ایجاد یک اعلان پایه برای SLM شما نیاز باشد. یکی از گزینه‌های مفید، امکان افزودن فیلترها به جستجو، اصلاح نتایج و ارائه زمینه دقیق‌تر برای برنامه شما است.

ما در روزهای اولیه Copilot Runtime هستیم و برخی از قطعات کلیدی پازل هنوز گم شده‌اند. یکی از موارد ضروری برای استفاده از نمایه های DiskANN ابزارهایی برای رمزگذاری داده های منبع شما به عنوان جاسازی های برداری است. این برای ایجاد یک جستجوی برداری، یا به عنوان بخشی از کد شما یا برای ارسال مجموعه ای پایه از نمایه های برداری با یک برنامه، لازم است.

DiskANN در جاهای دیگر مایکروسافت

در خارج از Copilot Runtime، مایکروسافت از DiskANN برای افزودن جستجوی برداری سریع به Cosmos DB. خدمات دیگری که از آن استفاده می کنند عبارتند از Microsoft 365 و Bing. در Cosmos DB، جستجوی برداری را به NoSQL API خود اضافه می کند، جایی که احتمالاً با مقادیر زیادی داده بسیار توزیع شده کار می کنید. در اینجا پشتیبانی DiskANN برای تغییر سریع داده ها در کنار مقیاس بندی پویا Cosmos DB کار می کند و یک شاخص جدید به هر پارتیشن جدید اضافه می کند. سپس کوئری ها را می توان به صورت موازی به تمام نمایه های پارتیشن موجود ارسال کرد.

Microsoft Research روی ابزارهایی کار کرده است مدتی است که DiskANN را دوست دارد، و خوب است که ببینیم آنها از تحقیقات خالص به محصول می روند، به ویژه محصولاتی که به طور گسترده ای مانند Cosmos DB و Windows استفاده می شوند. داشتن یک نمایه برداری سریع و دقیق به عنوان بخشی از Copilot Runtime خطرات مرتبط با هوش مصنوعی مولد را کاهش می دهد و ایندکس های شما را در رایانه شخصی شما حفظ می کند و داده های منبع را خصوصی نگه می دارد و SLM ها را زمین می کند. در ترکیب با تکنیک‌های محاسباتی محرمانه در ویندوز، به نظر می‌رسد مایکروسافت می‌تواند آماده ارائه هوش مصنوعی امن و خصوصی در دستگاه‌های خود باشد.

شاید به این مطالب علاقمند باشید