اگر امروز برای سرویسهای ترجمه ابری پول میپردازید، باید بدانید که مالکیت کامل زیرساخت میتواند هزینههای شما را به صفر برساند و امنیت دادههایتان را تضمین کند. پروژه Transdom یک موتور ترجمه هوش مصنوعی با میزبانی شخصی (Self-hosted) است که ثابت کرد تغییر روش استنتاج از مدلهای استاندارد PyTorch به کوانتیزاسیون int8 میتواند تأخیر در ترجمه را تقریباً ۸۶٪ کاهش دهد. این پروژه یک نقشه راه جامع برای توسعهدهندگانی فراهم میکند که میخواهند صورتحسابهای API بهازای هر کلمه و مواجهه دادههای حساس با شخص ثالث را حذف کرده و کنترل کامل زیرساخت را در دست بگیرند. سازنده این سیستم با تغییر رویکرد از «دنبال کردن آموزشها» به «رویکرد دادهمحور و اندازهگیری»، سیستمی ساخته است که در آن اپراتور کنترل مطلق روی سختافزار و جریان دادهها دارد.
بسیاری از توسعهدهندگان به APIهای ترجمه مبتنی بر ابر وابسته هستند که بهازای هر کاراکتر هزینه میگیرند و دادههای حساس کاربران را در سرورهای خود ذخیره میکنند. Transdom با ارائه یک موتور متنباز و میزبانی شخصی، این وابستگی را میشکند و ترجمه آنی هر صفحه وب را ممکن میکند. این سامانه از طریق گیتهاب (github.com/hjdesigner/transdom) و همچنین به عنوان یک بسته npm با دستور npm install transdom در دسترس است.
معماری هسته و زمینه سیستم
پروژه Transdom یک ابزار تکبعدی نیست، بلکه یک سیستم دو بخشی است که برای عملیات صحیح، هر دو جزء آن مورد نیاز هستند:
- سرور (The Server): این بخش با استفاده از پایتون و FastAPI ساخته شده و از طریق داکر (Docker) میزبانی میشود. این ساختار تضمین میکند که کاربر مالک دادهها و هزینههای زیرساختی باشد. استقرار سرور با دستورات سادهای انجام میشود: ابتدا
git clone https://github.com/hjdesigner/transdomو سپس ورود به پوشه باcd transdomو در نهایت اجرایdocker compose up --build. - کتابخانه کلاینت (The Client Library): کتابخانه
transdom.js(که شامل یک React hook نیز میشود) ساختار DOM صفحه را اسکن کرده و متنها را به سروری که در حال اجراست ارسال میکند. این کتابخانه از یکMutationObserverاستفاده میکند تا مطمئن شود محتوایی که بعداً توسط باز-رندر (re-render) فریمورکها به صفحه اضافه میشود نیز ترجمه شود.
برای ادغام کلاینت، توسعهدهندگان کتابخانه را با پیکربندیهای خاصی مقداردهی اولیه میکنند:
import { Transdom } from "transdom";
const transdom = new Transdom({
apiUrl: "http://your-server:8000/translate/batch",
sourceLang: "en",
targetLang: "pt",
});
transdom.startAutoTranslate();
پیشرفت در زمینه کوانتیزاسیون (Quantization)
طبق لاگهای توسعه این پروژه، چشمگیرترین افزایش عملکرد زمانی رخ داد که موتور پیشفرض PyTorch با CTranslate2 جایگزین شد. توسعهدهنده انتقال از دقت float32 به کوانتیزاسیون int8 را بنچمارک کرد؛ تکنیکی که وزنهای مدل را از اعداد اعشاری ۳۲ بیتی به اعداد صحیح ۸ بیتی کاهش میدهد. این رویکرد بهینهسازی مشابه تلاشهایی است که در پروژههای دیگر برای کاهش زمان تستات است، مانند زمانی که یک حلقه بازخورد در پایتون توانست زمان تست APIهای حجیم را تا ۸۰٪ کاهش دهد.
این پذیرشِ کاهش اندک دقت عددی در exchange با حافظه و سرعت، نتایج درستی به همراه داشت:
- PyTorch (float32): حدود ۵.۷۶ ثانیه برای ترجمه ۱۵ عبارت.
- CTranslate2 (int8): حدود ۰.۸۷ ثانیه برای ترجمه ۱۵ عبارت.
این تغییر به معنای افزایش ۶ برابری سرعت در زمان استنتاج (Inference) است. علاوه بر این، حجم مدل روی دیسک از تقریباً ۴۶۵ مگابایت به ۲۲۶ مگابایت کاهش یافت. برای اطمینان از اینکه این کاهش حجم باعث افت تجربه کاربری نشده است، بررسیهای کیفی با استفاده از امتیازات BLEU و chrF در مقابل یک مجموعه مرجع کوچک که بهصورت دستی نوشته شده بود، انجام شد. نتایج نشان داد که نسخه کوانتیده کیفیت را از دست نداده است؛ حتی در یک مورد، این نسخه عبارات طبیعیتری نسبت به نسخه float32 تولید کرد.

حل معمای حافظه پنهان و رم
برای بهینهسازی بیشتر، Transdom از حافظه پنهان معنایی (Semantic Caching) با استفاده از مدل جاسازی (Embedding) مدل all-MiniLM-L6-v2 بهره میبرد. برخلاف حافظههای پنهان استاندارد که نیاز به تطابق دقیق رشتهها (Exact String Match) دارند، این لایه از جاسازیهای جملات و شباهت کسینوسی (Cosine Similarity) استفاده میکند تا عباراتی را که معنای یکسانی دارند اما کلمات متفاوتی به کار بردهاند، شناسایی کند.
مکانیزمهای حافظه پنهان معنایی عبارتند از:
- منطق مقایسه: هر رشته ترجمهشده به یک بردار (Embedding) تبدیل میشود. درخواستهای جدید با این بردارهای ذخیرهشده توسط یک تابع خاص به نام
find_similar_translationمقایسه میشوند. - امتیازات شباهت: برای مثال، جملات «You have successfully logged in» و «You have logged in successfully» امتیاز شباهت ۰.۹۸۹۲ را کسب کردند.
- آستانه پذیرش (Thresholding): چون مقدار ۰.۹۸۹۲ از آستانه پیکربندی شده (۰.۹۲) بیشتر بود، سیستم از ترجمه ذخیرهشده در حافظه پنهان استفاده کرد. در مقابل، در یک تست «نزدیک اما متفاوت» بین جملات «Welcome to our website» و «Welcome to the website»، سیستم بهدرستی از ادغام آنها خودداری کرد، زیرا امتیاز شباهت به دلیل تفاوت در معانی مالکیت، پایینتر از آستانه بود.
جالب اینجاست که توسعهدهنده فرضیهای را تست کرد مبنی بر اینکه غیرفعال کردن این حافظه پنهان معنایی، مصرف رم سرور را بهشدت کاهش میدهد تا بتوان از پلینهای میزبانی ارزانتر استفاده کرد، زیرا کتابخانه sentence-transformers پایتورچ را به عنوان پیشنیاز فراخوانی میکند. با استفاده از docker stats و پس از حذف متغیرهای مزاحم مانند لاگهای بافر شده و کانتینرهای قدیمی، دادهها این فرضیه را رد کردند:
- وضعیت فعال حافظه پنهان معنایی: حدود ۳۷۸ مگابایت رم در حالت بیکار (Idle).
- وضعیت غیرفعال حافظه پنهان معنایی: حدود ۳۵۴ مگابایت رم در حالت بیکار.
این تفاوت اندک ۶ درصدی نشان داد که بخش عمده سربار حافظه مربوط به کتابخانه transformers و سربار CTranslate2 است، نه مدل جاسازی. بنابراین، این قابلیت حفظ شد زیرا صرفهجویی اندک در رم، توجیه حذف لایه کشینگ را نداشت.
مدیریت نامهای برند و موارد خاص (Edge Cases)
یکی از چالشهای بزرگ در ترجمه با هوش مصنوعی، حفظ نام برندها یا اصطلاحات خاص رابط کاربری است (مثلاً دکمه «Login» که باید همیشه به «Entrar» ترجمه شود). تلاشهای اولیه از ماسکهای جایگزین مانند «XVARX0» یا «XVARX1» استفاده میکرد. در حالی که این روش برای تککلمات عمل میکرد، اما زمانی که دو جایگزین در یک جمله ظاهر میشدند، مدل انسجام خود را از دست میداد و خروجیهای بیمعنی تولید میکرد.
راهکار «اسم خاص جعلی» (Fake Proper Noun):
- مکانیزم: سیستم عبارات محافظتشده را با کلمات ساختگی که شبیه به اسم خاص هستند جایگزین میکند؛ کلماتی مانند «Zurpaflex»، «Woblinka» یا «Trencivo».
- منطق: مدلهای ترجمه تمایل شدیدی دارند که اسمهای خاص را بدون تغییر باقی بگذارند. این توکنهای شبیه به اسم، بسیار قابلاعتمادتر از نمادهای الفانومریک (حروف و اعداد) از مرحله ترجمه عبور میکنند.
- مثال: جملهای مانند «Click Login or Sign up to use Transdom» با این اسمهای جعلی پردازش میشود و در نتیجه سه عبارت واژگانمایه (Glossary) حفظ شده و در یک گذر (Pass)، بهدرستی جایگزین میشوند (مثلاً به «Clique em Entrar ou Criar conta para usar o Transdom»).
قابلیتهایی که تعمداً حذف شدند
توسعهدهنده تصمیم گرفت که هر ویژگی هوش مصنوعی لزوماً ارزش افزودن ندارد و پس از تست، دو قابلیت رایج را به دلیل عدم کارایی حذف کرد:
- تشخیص خودکار زبان: مدل xlm-roberta-base-language-detection روی جملات کامل عملکرد خوبی داشت (بیش از ۹۵٪ اطمینان). اما در رشتههای کوتاه رابط کاربری شکست خورد. کلماتی مثل «Login» و «Home» تنها ۵۰-۶۵٪ اطمینان داشتند و کلمه «hey» بهاشتباه به عنوان زبان سواحیلی شناسایی شد. از آنجایی که در استقرارهای میزبانی شخصی، زبان مبدأ سایت از قبل مشخص است، تأخیر اضافی و حجم مدل توجیهپذیر نبود.
- مدلهای زبانی محلی (LLMs) از طریق Ollama: توسعهدهنده بررسی کرد که آیا از Ollama برای مدیریت مواردی مثل حفظ
{{templateVariables}}استفاده کند یا خیر. او متوجه شد چونtransdom.jsمحتوای DOM را بعد از اینکه فریمورک متغیرها را به مقادیر واقعی تبدیل کرده است میخواند، این مشکل در این معماری اصلاً وجود ندارد.
واقعیتهای امنیتی و استقرار
پروژه در فایل README خود درباره مرزهای امنیتی شفاف است. سیستم شامل محدودیت نرخ درخواست (Rate Limiting) بهازای هر IP، محدودیت اندازه دادههای ارسالی (Payload) و تنظیمات CORS است. با این حال، صراحتاً ذکر شده است که سیستم احراز هویت داخلی، TLS یا محافظت در برابر سوءاستفادههای توزیعشده (DDoS) را فراهم نمیکند. با میزبانی شخصی موتور ترجمه، اپراتور این مسئولیتهای امنیتی را بر عهده میگیرد.
تحلیل: استاندارد جدید مهندسی هوش مصنوعی
پروژه Transdom نشاندهنده تغییری در مهندسی هوش مصنوعی است؛ گذار از رویکرد «پرامپت بده و امیدوار باش» به یک چرخه سختگیرانه و مبتنی بر اندازهگیری. ارزش این پروژه تنها در نرمافزار آن نیست، بلکه در مستندسازی عمومی فرضیات شکستخورده است — مانند آزمایش صرفهجویی در رم برای حافظه پنهان. این توجه به جزئیات عملیاتی، تضاد عجیبی با برخی ابزارهای خودکار دارد که به دلیل نادیده گرفتن زمینه کسبوکار در پایداری نگهداری شکست میخورند.
برای توسعهدهندگان، این بدان معناست که مهارت اصلی در عصر حاضر، تنها نوشتن کدی که «کار کند» نیست، بلکه دانستن این نکته است که آیا یک قطعه کد خاص، ارزش پیچیدگی اضافهای را که به سیستم میآورد، دارد یا خیر. مهارت قابل انتقال در اینجا همان «چرخهی مهندسی» است: شکل دادن به یک فرضیه قابل ابطال، اندازهگیری واقعی آن و سپس پذیرش یا رد آن بر اساس دادهها. با اولویت دادن به بنچمارکها بهجای فرضها، یک تکتوسعهدهنده میتواند سیستمی را بهینه کند که روی میزبانیهای معمولی (Consumer-grade) اجرا شود، بدون اینکه کیفیت یک API ابری عظیم را فدا کند. همچنین، این نوع بهینهسازی در زمان و منابع، مشابه نتایجی است که در اتوماسیونهای عاملمحور Itelnet برای کاهش ۳۰ درصدی زمان کارهای بازاریابی مشاهده شد.
اگر شما یک اپلیکیشن وب خصوصی را مدیریت میکنید، اکنون میتوانید مخزن متنباز Transdom را در گیتهاب (تحت لایسنس MIT) بررسی کنید تا لایهی ترجمه مستقل و حاکم بر دادههای خود را پیادهسازی کنید.
گام بعدی شما
- مخزن متنباز Transdom را در گیتهاب بررسی کنید تا لایهی ترجمه مستقل خود را پیادهسازی کنید.
- اگر از مدلهای سنگین استفاده میکنید، تأثیر کوانتش int8 را روی تأخیر استنتاج مدلهای خود بسنجید.
- برای کاهش هزینههای API، پیادهسازی حافظه پنهان معنایی (Semantic Cache) را در جریان کاری خود تست کنید.
اما داستان سختافزاری این تحول حتی شگفتانگیزتر است — به تحلیل ما دربارهی تراشههای Blackwell مراجعه کنید.




گفتگو