
سالها ساخت، پیکربندی و بازکردن سرورهای خانگی مختلف این باور نادرست را در من از بین برده است که سیستمهای ارزانقیمت برای وظایف میزبانی شخصی (Self-Hosting) مناسب نیستند. با این حال، هنوز چند سرویس وجود دارد که ترجیح میدهم روی رایانههای گرانقیمتتر اجرا شوند؛ برای نمونه، اجرای مدلهای زبانی بزرگ (LLM) بهویژه مدلهای حجیم مبتنی بر معماری MoE تنها روی سیستمی با کارت گرافیک قدرتمند انویدیا و حافظه رم فراوان منطقی است. به همین ترتیب، برای کانتینر Immich نیز ترجیح میدهم از یک پردازنده گرافیکی اختصاصی استفاده کنم تا وظایف یادگیری ماشین این مدیر تصاویر بدون افت عملکرد انجام شود.
اپلیکیشنهایی مانند Jellyfin نیز پیشتر در همین فهرست قرار داشتند، اما همهچیز زمانی تغییر کرد که پردازنده گرافیکی یکپارچه (iGPU) موجود در یک برد تکبردی (SBC) اقتصادی مبتنی بر N100 را برای وظایف ترنسکدینگ ویدیو آزمایش کردم. بهجز برخی قالبهای خاص، یک iGPU در واقع توانایی چشمگیری در اجرای بارهای ترنسکدینگ شتابیافته با سختافزار (Hardware-Accelerated Transcoding) دارد؛ تا حدی که اکنون جای کارت گرافیک اختصاصی نسل پاسکال من را گرفته است.
چرا ابتدا تصور میکردم Jellyfin به کارت گرافیک اختصاصی نیاز دارد
سرور Jellyfin خود را مدتها پیش راهاندازی کرده و آن را به اشتراک شبکهای متصل کرده بودم که همه فیلمهای آرشیوشده در طول سالها در آن قرار داشت. از آنجا که بسیاری از این فیلمها در قالبهایی هستند که اپلیکیشنهای معمول کلاینت از آنها پشتیبانی نمیکنند، ناچار شدم به فکر فراهمکردن امکان ترنسکدینگ ویدیو با شتاب سختافزاری برای مجموعه رسانهای خود باشم.
از سوی دیگر، Jellyfin سرویسی است که تمام خانواده برای شبهای فیلم به آن تکیه میکنند و نمیخواستم درایورهای معیوب، باگهای تصادفی سازگاری یا مشکلات عملکردی تجربه آنها را خراب کند. بهعنوان کسی که در دورهای که درایورهای انویدیا در زمینه سازگاری با لینوکس حرف اول را میزدند، به دنیای رایانههای شخصی وارد شده بودم، نخستین گزینهام این بود که کارت GTX 1080 خود را بهعنوان سختافزار اختصاصی ترنسکدینگ به کار بگیرم. این کارت گرافیک قدیمی بدون هیچ مشکلی به کانتینر LXC مبتنی بر Jellyfin روی Proxmox VE سرویس میداد.
با این حال، اخیراً کار با مدلهای زبانی محلی (Self-Hosted LLM) را آغاز کردم و این کارت، با وجود طراحی قدیمی و غیرمبتنی بر هستههای تنسور، میتوانست مدلهایی مانند Gemma-4-E4B و حتی Gemma-4-26B-A3B را از طریق بارگذاری جزئی بر پایه MoE با نرخ تولید توکن قابلقبولی اجرا کند. بنابراین خواستم این کارت را از قید Jellyfin آزاد کرده و به بارهای کاری مدل زبانی اختصاص دهم. علاوه بر این، روشن ماندن یک کارت گرافیک مخصوص بازی در طول شبهای فیلم Jellyfin انرژی قابلتوجهی مصرف میکند و با توجه به شمار دستگاههای موجود، ترجیح میدهم تا حد امکان در هزینه برق صرفهجویی کنم.
در نتیجه به گزینهای جایگزین برای وظایف شتابدهی ویدیو نیاز داشتم و همینجا بود که تصمیم گرفتم توجه خود را به یک سرور سبک مبتنی بر N100 و پردازنده گرافیکی یکپارچه آن معطوف کنم.
یک N100 «ساده» از عهده ترنسکدینگ بهخوبی برمیآید
و این موفقیت کاملاً مدیون هسته Quick Sync Video تعبیهشده در این پردازنده اقتصادی است. از آنجا که Intel N100 یک پردازنده جاسازیشده (Embedded) ارزانقیمت است، iGPU آن در برابر یک کارت گرافیک اختصاصی برای بازی، یادگیری ماشین و میزبانی مدلهای زبانی حرفی برای گفتن ندارد. اما اگر این وظایف سنگین را کنار بگذاریم، وضعیت در ترنسکدینگ ویدیو کاملاً متفاوت است؛ اینتل هسته Quick Sync Video را در iGPU بیشتر پردازندههای مدرن جای داده و این هسته دقیقاً برای انجام وظایف ترنسکدینگ طراحی شده است.
من از ماژول محاسباتی N100 خود (بهطور مشخص Latte Panda Mu) بهعنوان یک گره یدکی Proxmox VE برای سرویسهای پایش استفاده میکردم و به این نتیجه رسیدم که میتوانم توانمندیهای QSV آن را با شبیهسازی چند استریم Jellyfin بیازمایم. به لطف فرمان استقرار کانتینر LXC جلیفین در مخزن Proxmox VE Community Scripts، پاسترو کردن پردازنده گرافیکی (یا بهتر است بگوییم iGPU) در این کانتینر بهصورت خودکار انجام شد.
عملکرد در عمل: هشت استریم 1080p و سه استریم 4K
از نظر عملکرد، ترکیب کانتینر LXC جلیفین و iGPU میتواند هشت استریم 1080p را ترنسکد کند، به شرط آنکه آن را درگیر آزمایشهای پراکنده Proxmox VE نکنم. حتی میتواند سه استریم 4K را همزمان پردازش کند که بسیار بیش از نیاز خانواده من است. چون این پردازنده گرافیکی روی یک پردازنده جاسازیشده کوچک قرار دارد، نگرانی درباره مصرف دهها وات برق تنها برای پخش یک فیلم قدیمی روی پروژکتور وجود ندارد.
البته این پیکربندی یک محدودیت جزئی هم دارد. این مجموعه میتواند ترنسکدینگ H.264 (با نام AVC) و H.265 (با نام HEVC) را بهراحتی انجام دهد، اما وضعیت هنگام مواجهه با فیلمهای مبتنی بر استاندارد AV1 متفاوت است. از آنجا که این پردازنده یک دیکودر AV1 دارد، میتواند هر فیلمی را که بر این استاندارد فشردهسازی تکیه دارد بدون مشکل به AVC یا HEVC تبدیل کند؛ ولی چون انکودر اختصاصی AV1 ندارد، برای پخش این ویدیوها باید به انکود نرمافزاری (Software Encoding) تکیه کرد.
در مورد شخصی من، بیشتر عناوین در قالبهای H.264 و HEVC هستند و در حال حاضر نیازی به دیکد کردن چیزی به AV1 ندارم. بنابراین این موضوع برای پیکربندی من چندان مشکلساز نیست و با رضایت کامل اجازه میدهم N100 بارهای ترنسکدینگ شتابیافته با سختافزار را بر عهده بگیرد، در حالی که کارت گرافیک نسل پاسکال من مدلهای زبانی مفیدی را برای سرویسهای بهرهوری اجرا میکند.
ترفند دیگر پردازندههای اینتل برای سرورهای خانگی
علاوه بر عملکرد چشمگیر در عملیات ترنسکدینگ، پردازندههای مدرن اینتل به لطف OpenVINO در اجرای قابلیتهای هوش مصنوعی در پلتفرمهای ضبطکننده ویدیوی شبکهای (NVR) نیز توانمند هستند. در واقع OpenVINO مجموعهابزاری است که کارتهای گرافیک، پردازندههای گرافیکی یکپارچه و واحدهای پردازش عصبی (NPU) اینتل را در وظایف تشخیص اشیا کارآمد میکند. من در حال حاضر از کیت رسمی هوش مصنوعی رزبریپای همراه با پیکربندی Frigate استفاده میکنم، اما آشکارسازهای مبتنی بر OpenVINO با پردازندههای ارزان اینتل همخوانی فوقالعادهای دارند؛ تا حدی که حتی Frigate هم استفاده از آنها را به ماژولهای Coral Edge TPU ترجیح میدهد.