برنامه نویسی

ترکیب مدل‌های .NET Aspire، Docker (Remote) و یادگیری ماشین برای خلاصه کردن عکس‌ها

وقتی صحبت از فناوری‌های بومی ابری می‌شود، راه‌های مختلفی برای ایجاد محیط‌های توسعه محلی برای سرعت بخشیدن به مهندسین جدید یا فرآیند تغییر پروژه‌ها/محیط‌ها برای اهداف توسعه وجود داشته است. مایکروسافت.

در چند سال گذشته، مدل‌های یادگیری ماشین منبع باز نیز محبوبیت پیدا کرده‌اند و موانع ورود برای ساخت برنامه‌هایی را که چنین عملکردی را نشان می‌دهند، کاهش داده‌اند. Ollama یک ابزار متن باز با یک پیام ساده است: “با مدل های زبان بزرگ راه اندازی کنید.”

هدف این پست این است که بفهمیم Net Aspire تا چه حد می‌تواند تحت شرایط خاصی که ممکن است نیاز به استفاده از یک میزبان Docker راه دور با GPU اختصاصی داشته باشد، انعطاف‌پذیر باشد. البته داشتن یک مورد استفاده سرگرم کننده که در آن عکس ها را با استفاده از مدل های چند حالته مانند LLaVA و در نهایت مدل های دیگر خلاصه می کنیم، یک امتیاز اضافی است.

در شرایط عادی، تعریف وابستگی‌هایمان و سپس اجرای راه‌حل بر روی هر دستگاهی که از آن استفاده می‌کنیم، ساده است. با این حال، استفاده از یک GPU اختصاصی (مخصوصا VRAM) می‌تواند به تکرار سریع‌تر محلی هنگام استفاده از مدل‌های یادگیری ماشین کمک کند. اغلب لپ‌تاپ‌هایی که از آنها استفاده می‌کنیم، منابع سخت‌افزاری/حافظه لازم را ندارند و اگر بخواهیم استنتاج بر روی مدل‌های ML را به صورت محلی اجرا کنیم، فن‌ها به سرعت بلند می‌شوند.

در مواقعی مانند این، چه می‌شود اگر می‌توانیم طبق معمول آرزوی مدیریت ارکستراسیون را داشته باشیم، اما کانتینرها را از راه دور روی میزبانی با منابع لازم از طریق شبکه محلی اجرا کنیم؟ از یک سطح بالا، به نظر می رسد این است

نمای کلی سطح بالا - توسعه لپ تاپ ها و Docker Host PC

این پست این رویکرد را پوشش می دهد و ساختار به شرح زیر خواهد بود:

  • استفاده از یک میزبان Docker راه دور – چگونه داکر اجازه می دهد تا بارهای کاری را روی یک میزبان راه دور اجرا کنید.
  • Net Aspire – چگونه از میزبان های Docker راه دور هنگام استفاده از Net Aspire پشتیبانی می کند؟
    • اطمینان از اینکه کانتینرها به آدرس Lan IO گوش می دهند.
    • تزریق رشته های اتصال با آدرس IP صحیح به بارهای کاری.
  • چگونه می توان پشتیبانی از کانتینرهای سفارشی مانند Ollama یا پروژه پایتون خود را که در کنار پروژه های Net ما اجرا می شود اضافه کرد؟
  • یک برنامه آزمایشی که در آن از یک Net Web API، Background Worker، پایگاه داده PostgreSQL، RabbitMQ و Ollama برای خلاصه کردن عکس‌های کتابخانه خود استفاده می‌کنیم.

در این پست، اصطلاح Docker به معنای هر زمان اجرا است که با استانداردهای مشخص شده توسط Open Container Initiative مطابقت دارد. به این ترتیب انتظار می رود Podman و Rancher Desktop نیز در کنار Docker Engine کار کنند. این امکان سوئیچینگ باطن را فراهم می کند در حالی که از همان ابزار CLI در خطوط لوله و محیط های دیگر به جای تغییر پیکربندی استفاده می شود. Podman Documentation بخشی به این مفهوم دارد.

متغیر محیطی DOCKER_HOST

با توجه به اینکه یک Container Runtime متشکل از یک CLI و یک مؤلفه API است، می‌توان Docker Daemon را روی میزبان‌های راه دور با استفاده از Docker cli به صورت محلی مدیریت کرد. این شبیه به نحوه است kubectl و Kubernetes API با هم کار می کنند.

تصویر زیر این مفهوم را نشان می دهد.

معماری Docker سطح بالا

یکی از راه‌های رسیدن به هدف ما از اجرای کانتینرها بر روی یک میزبان راه دور هنگام استفاده از Net Aspire، استفاده از پروتکل ssh به شرح زیر است:

  • یک ماشین میزبان در شبکه ما وجود دارد و این امکان برای ما وجود دارد که از ماشین کلاینت به ssh وارد شویم.
    • این دستگاه دارای پردازنده گرافیکی Nvidia و همچنین NVIDIA Docker پیکربندی شده است.
  • متغیر محیطی DOCKER_HOST را تنظیم کنید export DOCKER_HOST=ssh://user@ip_address در ماشین مشتری
  • دستورات docker را طبق معمول اجرا کنید
    • در صورتی که احراز هویت ssh موفقیت آمیز باشد، دستورات در میزبان راه دور اجرا می شوند.

حتی می توان این کار را بدون متغیرهای محیطی انجام داد:
docker -H ssh://user@ip_address ps
هنگامی که پارامتر -H و یک مقدار معتبر را مشخص می کنیم (SSH همان چیزی است که در این مورد استفاده می کنیم اما گزینه های دیگری نیز وجود دارد)

این تنها چیزی است که لازم است تا بتوان دستورات docker را روی یک میزبان راه دور در شبکه محلی اجرا کرد.

ترانسفورماتورها، ترانسفورماتورهای بینایی (ViTs) و مدل های چندوجهی

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

برخی از مفاهیم کلیدی عبارتند از:

  • مکانیسم توجه به خود: این ویژگی اصلی ترانسفورماتورها است. این اجازه می دهد تا مدل بر روی بخش های مختلف داده های ورودی تمرکز کند و روابط بین آنها را درک کند. به عنوان مثال، در یک تصویر، توجه به خود به مدل کمک می کند تا بفهمد کدام بخش از تصویر برای یک کار مشخص مهم است. به طور سنتی، ما عملیات پیچیدگی را در نظر می‌گیریم و بر روابط فضایی محلی تمرکز می‌کنیم، با این حال، مکانیسم‌های توجه به درک الگوهایی اجازه می‌دهند که روابط مکانی محلی ممکن است همیشه کمک نکنند.
  • معماری: ترانسفورماتورها از یک رمزگذار و یک رمزگشا تشکیل شده اند. رمزگذار داده های ورودی (متن / تصاویر) را پردازش می کند و رمزگشا خروجی را تولید می کند (مانند ترجمه ها یا توضیحات تصویر در مورد ما).
  • مدل‌های چندوجهی: این مدل‌ها می‌توانند انواع مختلف داده‌ها مانند متن، تصویر و صدا را پردازش و ادغام کنند. ترانسفورماتورها برای این کار بسیار مناسب هستند زیرا می توانند توالی هر نوع داده را پس از به دست آوردن جاسازی ها کنترل کنند.
  • ترانسفورماتورهای بینایی: این ترانسفورماتورها به طور خاص برای وظایف بینایی کامپیوتری سازگار شده اند. آنها تصاویر را به‌عنوان دنباله‌ای از تکه‌های کوچک‌تر (مانند بلوک‌های کوچک تصویر) در نظر می‌گیرند، که به آن‌ها اجازه می‌دهد تا از همان تکنیک‌های قدرتمند مورد استفاده در پردازش زبان برای درک و تولید اطلاعات بصری استفاده کنند.

در این نسخه ی نمایشی از مدل های زیر با استفاده از Ollama و همچنین Hugging Face استفاده خواهیم کرد.

  • انواع Florence-2: یک مدل پایه بینایی پیشرفته که از یک رویکرد مبتنی بر فوری برای رسیدگی به طیف گسترده ای از وظایف بینایی و زبان بینایی با نیازهای منابع نسبتاً کم استفاده می کند.
  • انواع LLaVA: LLaVA یک مدل چندوجهی برای درک بصری و زبانی همه منظوره است که به قابلیت‌های چت چشمگیر با تقلید از روح GPT-4 چند وجهی دست می‌یابد.

Ollama یک پروژه متن باز است که امکان دسترسی آسان به مدل های LLM منبع باز را فراهم می کند. Ollama یک cli و cli محلی را ارائه می دهد که قادر به دانلود مدل های لازم است، فرآیند آزمایش را به صورت محلی ساده می کند. شعار آنها همه چیز را خلاصه می کند: “با مدل های زبان بزرگ بلند شوید و اجرا کنید”

اجزای سیستم

پس چگونه می توانیم در هنگام استفاده از Net Aspire همه آن ها را کنار هم قرار دهیم؟

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

پروژه آزمایشی عملکرد کلیدی زیر را ارائه می دهد:

  • یک API Net برای رسیدگی به درخواست‌های وارد کردن/به‌روزرسانی عکس‌ها و ارسال آن‌ها از طریق اتوبوس
  • یک کارگر پس‌زمینه که به پیام‌ها گوش می‌دهد و اعمال واردات/خلاصه را انجام می‌دهد.
  • یک ظرف Ollama که مدل های LLaVA را با استفاده از Ollama http API ساخته شده ارائه می دهد.
  • یک کانتینر پایتون که با استفاده از Flask ساخته شده است که استنتاج را بر روی مدل‌های Florence-2 اجرا می‌کند و توسط یک فراخوانی Http API راه‌اندازی می‌شود.
  • RabbitMq، PostgreSQL، PgAdmin،

بررسی اجمالی سیستم

Net Aspire

اگرچه استفاده اولیه از خلاصه کردن عکس‌ها اخیراً یک علاقه شخصی بوده است، انگیزه پشت این پست عمدتاً ناشی از کنجکاوی در مورد مقایسه Net Aspire با استفاده از چیزی مانند Docker Compose است.

Net Aspire یک رویکرد هماهنگ‌سازی برای توسعه محلی ارائه می‌کند که در آن می‌توانیم وابستگی‌های اجزای خود را با استفاده از کد C# توصیف کنیم و سپس راه‌حل‌های خود را به صورت محلی رفع اشکال کنیم. ما همچنین یک داشبورد خوب دریافت می‌کنیم که در آن حتی گزارش‌های ساختاری از برنامه‌هایی که در حال ساخت‌مان هستیم و اجزایی که از آنها شکایت می‌کنیم در دسترس هستند.

پیکربندی و اجرای ظروف از راه دور به صورت شفاف

همانطور که توضیح داده شد، زمانی که ما با Docker CLI تعامل داریم، بسته به تنظیمات، Daemon Docker که در حال تعامل هستیم می‌تواند روی ماشین دیگری باشد.

    "http-remote-host-with-gpu": {
      "commandName": "Project",
      "dotnetRunMessages": true,
      "launchBrowser": true,
      "applicationUrl": "http://localhost:15273",
      "environmentVariables": {
        "DOCKER_HOST": "ssh://user@ip_address",
        "ENABLE_NVIDIA_DOCKER": "true",
        "VISION_MODEL": "llava:13b",
        "FLORENCE_MODEL": "Florence-2-large-ft",
        "ASPNETCORE_ENVIRONMENT": "Development",
        "DOTNET_ENVIRONMENT": "Development",
        "ASPIRE_ALLOW_UNSECURED_TRANSPORT" : "true",
      }
    }
وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

همانطور که در زیر می بینیم، با تنظیم DOCKER_HOST متغیر محیطی در launch settings.json برای Apphost تنها کاری است که باید انجام دهیم.

  • DOCKER_HOST: کاربر و میزبانی که منابع لازم برای اجرای کانتینرهای ما را دارد و اجازه دسترسی به کاربر خاص از طریق ssh را می دهد.
  • ENABLE_NVIDIA_DOCKER: برای Ollama امکان استفاده از NVIdia Docker وجود دارد به شرط اینکه ماشین میزبان از آن پشتیبانی کند. انتخاب این گزینه بدون در نظر گرفتن تنظیمات میزبان Docker، Nvidia Docker را در کانتینر با ارسال آرگومان های زمان اجرا “–gpus=all” به کانتینر مانند زیر فعال می کند. مهم است که دستگاهی که کانتینرها را اجرا می کنیم (محلی یا غیرمحلی) دارای پردازنده گرافیکی Nvidia سازگار و راه اندازی Nvidia Docker باشد. در یک ماشین اوبونتو، من از پشته Lambda برای این منظور استفاده می کنم.
if (useGpu)
{
    ollamaResourceBuilder.WithContainerRuntimeArgs("--gpus=all");
}
وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

همانطور که پرچم‌های بالا را تنظیم می‌کنیم، کانتینرهای مورد نیاز ما یا به صورت محلی یا از راه دور اجرا می‌شوند که پروژه Aspire خود را روی یک ماشین توسعه‌دهنده راه‌اندازی کنیم. این به صورت شفاف اتفاق می‌افتد، زیرا نیازی به انجام هیچ عملی در دستگاه محلی یا راه دور ندارید.

با این حال، این برای تجربه توسعه‌دهندگان ما شفاف است زیرا بدون در نظر گرفتن اینکه Docker Host از چه چیزی استفاده می‌شود، پروژه‌های خود را به همان روش اشکال‌زدایی/شروع می‌کنیم.

گوچاس

اگرچه این ساده است، اما قوانین اساسی Docker همچنان اعمال می شود. هنگام استفاده از پیش‌فرض‌ها، و کانتینرها را تعریف می‌کنیم، پورت‌های کانتینر در معرض فقط از طریق ماشین محلی با استفاده از localhost قابل دسترسی خواهند بود.

اگر کانتینرهای خود را بر روی یک میزبان راه دور اجرا می کنیم، باید با استفاده از IP Lan میزبان docker به این خدمات دسترسی داشته باشیم و نگاشت پورت کانتینر باید در رابط شبکه صحیح در معرض دید قرار گیرد.

هنگامی که این کار را انجام دادیم، همچنین باید رشته های اتصال را به پروژه های خود تزریق کنیم. به عنوان مثال، اتصال پایگاه داده در ابتدا Localhost دارد، اما اگر کانتینر db ما روی یک میزبان راه دور باشد، باید اطمینان حاصل کنیم که ip/port صحیح در رشته های اتصال مربوطه منعکس شده است تا بتوانیم خدمات خود را مطابق انتظار انجام دهیم.

نکات در بخش های بعدی توضیح داده خواهد شد.

افزودن منبع اوللاما

توسعه پذیری اطراف Aspire عالی است و Jason Fauchelle از RAYGUN مقاله عالی در مورد نحوه ادغام Ollama با Aspire ارائه کرده است که کد موجود در این نسخه آزمایشی بر اساس آن است. کد اینجا بر اساس این مثال است.

  • یک منبع تعریف کنید OlamaResource.cs
    • مسئول:
    • گرفتن رابط پورت/شبکه ​​برای اتصال
    • نشان دادن رشته اتصال صحیح
    • گرفتن پارامترهایی مانند نام مدل برای دانلود،
  • پسوندها را برای هماهنگ کردن منبع OllamaResourceBuilderExtensions تعریف کنید
    • مسئول:
    • تعریف پارامترهای کانتینر مانند تصویر، برچسب و حجم
    • اضافه کردن اختیاری پشتیبانی GPU برای Container
    • اگر روی هاست داکر راه دور اجرا می شود، رابط صحیح را تنظیم کنید یا اگر میزبان راه دور تنظیم نشده است، از لوکال هاست استفاده کنید.
  • تعریف یک قلاب چرخه حیات OlamaResourceLifecycleHook
    • مسئولیت ها:
    • برای انتشار به‌روزرسانی‌ها هنگام دانلود مدل‌ها به‌گونه‌ای که بتوان آن‌ها را در داشبورد نشان داد.

// Define the resource and pass the parameters from the environment variables.

var ollamaContainer = builder.AddOllama(hostIpAddress: dockerHost, modelName: ollamaVisionModel,
    useGpu: enableNvidiaDocker);

// Any other service depending on will have correct connection string injected after     .WithReference(ollamaContainer) call.

وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

با تمام این کارها، می توانیم از IOllamaApiClient در کد خود برای اجرای استنتاج از طریق API به صورت زیر استفاده کنیم:

  private async TaskConversationContextWithResponse?> RunPrompt(string modelName, string prompt, long[]? context, string? base64Image)
    {
        var attempt = 0;

        var request = new GenerateCompletionRequest()
        {
            Prompt = prompt,
            Model = modelName,
            Stream = false,
            Context = context,
            Images = string.IsNullOrEmpty(base64Image) ? null : [base64Image]
        };

        var result = await ollamaApiClient.GetCompletion(request);
        while(string.IsNullOrEmpty(result?.Response) && attempt++  MaxRetryAttempts)
        {
            result = await ollamaApiClient.GetCompletion(request);
        }

        return result;
    }
وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

ساخت اپلیکیشن فلاسک و ارائه مدل های صورت در آغوش گرفته

خوشبختانه، در حال حاضر یک بسته Aspire وجود دارد که اجازه اجرای پروژه های پایتون را به عنوان بخشی از راه اندازی ما می دهد. بنابراین ما نیازی به انجام کارهای زیادی در اینجا نداریم، علاوه بر تمرکز روی برنامه پایتون.

ما می توانیم کد پایتون را بنویسیم و به عنوان یک وب API از طریق Flask یا موارد مشابه ادغام کنیم و زمانی که پروژه Aspire ما شروع می شود، آن را راه اندازی کنیم. به عنوان یک جایزه، ما همچنین پشتیبانی OpenTelemetry را به صورت رایگان دریافت می کنیم.

این کد قابلیت اجرای استنتاج بر روی انواع مدل Floerence-2 دانلود شده از Huggingface را نشان می دهد، به خصوص انواع پایه Florence-2 نسبتاً سبک هستند تا به صورت محلی بر روی یک ماشین توسعه دهنده اجرا شوند.

به شرطی که یک پروژه پایتون را همانطور که در مخزن Aspire-Python مستند شده ایجاد کرده باشیم، راه اندازی API Python از میزبان Aspire بسیار ساده است:


var flaskAppFlorenceApi = builder.AddFlaskProjectWithVirtualEnvironment("florence2api", 
    "../PhotoSearch.Florence2.API/src")    .WithEnvironment("FLORENCE_MODEL",Environment.GetEnvironmentVariable("FLORENCE_MODEL"))
    .WithEnvironment("PYTHONUNBUFFERED","0");

وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

هنگامی که موارد فوق را انجام دادیم، می‌توانیم وابستگی‌ها را به طور معمول در Aspire Apphost خود تنظیم کنیم و اطمینان حاصل کنیم که رشته‌های اتصال تزریق می‌شوند. به عنوان مثال، این پروژه به صورت محلی روی ماشین توسعه دهنده کار می کند و بنابراین نیازی به تنظیم رشته های اتصال در میزبان Aspire نیست.

برای ادغام کد پایتون موارد زیر مورد نیاز است:

  • یک دایرکتوری در راه حل برای پروژه پایتون ایجاد کنید.
  • پروژه را با استفاده از چاودار راه اندازی کنید (لینک در پایین)
  • مقداری کد پایتون بنویسید. نمونه های زیر

چک کردن داشبورد

در زیر می‌توانیم ردیابی‌هایی را که از پس‌زمینه کارگر منشأ می‌گیرند، هنگام فراخوانی florence2api مشاهده کنیم و سپس می‌توانیم گستره‌های داخلی سرویس Python را برای پرس‌و‌جوهایgene_caption و object_detection ببینیم. بدون دردسر زیاد، ما ردیابی را تنظیم کرده ایم و حتی در هنگام استفاده از زبان های مختلف از داشبورد خود قابل مشاهده است.

خلاصه ردیابی

جزئیات ردیابی

این پروژه با یک فایل http ارائه می شود که می تواند برای راه اندازی فراخوانی API برای وارد کردن عکس ها در DB و همچنین خلاصه کردن مدل ها استفاده شود:

فایل http

همچنین می‌توانیم لاگ‌های ساختاریافته (علاوه بر ردیابی‌ها و معیارها) از پروژه پایتون خود را مانند زیر مشاهده کنیم.

نتایج

در اینجا بخشی است که خروجی مدل های مختلف را با استفاده از یکی از تصاویر ارائه شده نشان می دهد.

عکس کنسرت AC/DC.

مدل شرح اشیاء
لاوا: 7b تصویر صحنه کنسرت پر جنب و جوشی را ثبت می کند. صحنه ای که در پس زمینه آرم نمادین AC/DC تنظیم شده است، که با نورهای سفید و قرمز روشن می شود، به عنوان تمرکز اصلی عمل می کند. در این صحنه، دو نوازنده دیده می‌شوند: یکی در سمت چپ با میکروفون و دیگری در سمت راست در حال نواختن گیتار. جمعیت در پیش‌زمینه مملو از طرفداران مشتاق است، چهره‌هایشان تار شده و به فضای پویا کنسرت می‌افزاید. در پس‌زمینه، دو بلندگوی بزرگ به‌عنوان نگهبان‌های بی‌صدا ایستاده‌اند و آماده تقویت صدای اجرا هستند. پرسپکتیو تصویر نشان می‌دهد که از فاصله دور گرفته شده است و بیننده را در میان جمعیت قرار می‌دهد و به آن‌ها اجازه می‌دهد تا کل رویداد را ببینند. با وجود عدم وجود متن، تصویر انرژی و هیجان مترادف با اجرای موسیقی زنده را منتقل می کند. صحنه، پس زمینه، لوگو، چراغ ها، مجری، میکروفون، گیتار، جمعیت، طرفداران، بلندگوها
گدازه: 13b این تصویر صحنه کنسرت با حضور گروه AC/DC را نشان می دهد. روی صحنه، سه عضو گروه قابل مشاهده هستند. یکی در حال نواختن گیتار است در حالی که دیگری پشت میکروفون می ایستد و احتمالاً آواز اجرا می کند یا با حضار صحبت می کند. به نظر می رسد شخص سومی تجهیزات صوتی یا نور را کنترل می کند. صحنه در برابر یک صفحه LED بزرگ قرار دارد که نام AC/DC را به طور برجسته با حروف سفید پررنگ در پس‌زمینه قرمز نشان می‌دهد. نورپردازی از روی صحنه و صفحه‌ها فضایی پویا را ایجاد می‌کند که نمونه‌ای از یک کنسرت زنده راک است.\n\nدر پیش‌زمینه، چهره‌های تار متعددی وجود دارند که نشان‌دهنده تماشاگران هستند، که نشان می‌دهد عکس در حین اجرا گرفته شده است، زمانی که جمعیت فعال هستند. درگیر با گروه رنگ‌های تصویر پر جنب و جوش هستند و رنگ‌های قرمز و سفید بر نور صحنه تسلط دارند و به احساس انرژی محیط کنسرت کمک می‌کنند. هیچ متن قابل مشاهده ای وجود ندارد که زمینه یا اطلاعات بیشتری درباره رویداد یا مکان در تصویر ارائه دهد. اعضای گروه روی صحنه، صفحه نمایش LED با AC/DC نوشته شده روی آن، پایه میکروفون، اپراتور تجهیزات صوتی/روشنایی
فلورانس-2-پایه-فوت صحنه روشن شده است. افرادی در جایگاه ها نشسته اند و کنسرت را تماشا می کنند. یک تابلوی بزرگ روی صحنه وجود دارد که روی آن AC/CD نوشته شده است ساختمان، شخص
فلورانس-2-فوت بزرگ یک گروه موسیقی روی صحنه اجرا می کند. تابلوی بزرگی روی صحنه وجود دارد که روی آن AC/DC نوشته شده است. در سقف بالای صحنه نورهایی وجود دارد. زنگ بزرگی از سقف آویزان است. بسیاری از مردم جلوی صحنه ایستاده اند و گروه را تماشا می کنند. درام، گیتار، بلندگو، شخص

تصویری از رویال آلبرت هال در لندن

مدل شرح اشیاء
لاوا: 7b این تصویر صحنه‌ای پرجنب‌وجوش را نشان می‌دهد که در اطراف تالار نمادین رویال آلبرت، یک مکان کنسرت مشهور در لندن، متمرکز شده است. این سازه بزرگ بلافاصله با شکل دایره ای بزرگ و سقف آبی متمایزش قابل تشخیص است. جزئیات معماری ساختمان به وضوح قابل مشاهده است و الگوهای پیچیده ای را به نمایش می گذارد که آن را در میان منظره شهری متمایز می کند. در جلوی ساختمان، میدانی پرجنب‌وجوش وجود دارد که مردم در آن از اوقات خود لذت می‌برند. درختی با برگ‌های سبز به‌طور برجسته در این میدان ایستاده و برای کسانی که زیر شاخه‌هایش هستند، سایه می‌دهد. این میدان همچنین دارای یک مجسمه است که در سکوت، شلوغی و شلوغی اطراف خود را مشاهده می کند. این عکس ساختمان را از فاصله دور ثبت می کند و امکان مشاهده کامل معماری و فعالیت های اطراف آن را فراهم می کند. آسمان صاف بالای سر با فضای سبز در پیش زمینه تضاد دارد و ترکیبی هماهنگ از طبیعت و توسعه شهری ایجاد می کند. این عکس علیرغم اینکه فقط یک تصویر است، داستانی از جنب و جوش و انرژی لندن را با ترکیبی از معماری تاریخی مانند تالار رویال آلبرت و زندگی روزمره به شکل مردمی که از اوقات خود در مقابل این بنای دیدنی لذت می برند، بازگو می کند. ساختمان، درخت، مجسمه
گدازه: 13b این تصویر نمایی از رویال آلبرت هال، محل برگزاری کنسرت های معروف در لندن، بریتانیا را نشان می دهد. این بنا با گنبد مرکزی بزرگ و پنجره‌های قوسی متعدد اطراف آن، دارای طراحی معماری متمایز است. نما آجری قرمز با جزئیات سفید است، و چندین نفر در مسیر پیاده روی جلوی سالن قابل مشاهده هستند، که نشان می دهد ممکن است یک فضای عمومی باشد که بازدیدکنندگان می توانند از رویدادهای خارج از منزل کاوش کنند یا از آن لذت ببرند. آسمان صاف با ابرهای پراکنده در سراسر آن است که نشان دهنده شرایط آب و هوایی مناسب هنگام گرفتن عکس است. درختانی وجود دارند که تصویر را در لبه‌های آن قاب می‌کنند و به حس فضای باز پارک مانند اطراف این ساختمان تاریخی می‌افزایند. رویال آلبرت هال، محل برگزاری کنسرت، لندن، بریتانیا، معماری، گنبد، پنجره‌های قوسی، نمای آجری قرمز، جزئیات سفید، بازدیدکنندگان، پیاده‌رو، رویدادهای فضای باز، آب و هوای مناسب، آسمان، ابرها، درختان
فلورانس-2-پایه-فوت ساختمان بزرگ قهوه ای رنگ با گنبدی در بالای آن. یک درخت سبز بزرگ در کنار ساختمان وجود دارد. افرادی هستند که جلوی ساختمان روی چمن ایستاده اند. ساختمان
فلورانس-2-فوت بزرگ ساختمان بزرگ قهوه ای رنگ با گنبدی در بالای آن. یک درخت سبز بزرگ جلوی ساختمان وجود دارد. مردمی هستند که جلوی پیاده رو و روی چمن ها ایستاده اند. ساختمان، خانه

نتیجه گیری و مراحل بعدی

در این پست، Net Aspire، برخی از مدل‌ها / ابزارهای منبع باز را بررسی کرده‌ایم که امکان دسترسی راحت برای انجام استنتاج به صورت محلی را فراهم می‌کنند و همچنین چگونه می‌توانیم از مفاهیم docker با Aspire استفاده کنیم تا بتوانیم وظایف ML را به ماشین‌های دیگر بارگذاری کنیم. در شبکه محلی موجود است

مطمئن نبودم که این تجربه با توجه به فایل Docker Compose که همه کانتینرهایی را که برای کار کردن نیاز داریم و سپس از مقدار DOCKER_HOST برای اجرای آن بر روی یک میزبان راه دور تعریف می‌کند، قابل مقایسه باشد.

مثال کد اینجا تقریباً یک آخر هفته کامل طول کشید، اما این اولین باری بود که Aspire را با جزئیات لمس می کردم. با رویکرد Docker compose، زمان کمتری برای راه‌اندازی و پیکربندی وجود خواهد داشت تا بتوانم کارهای بیشتری را روی عملکرد واقعی برنامه انجام دهم. با این حال در پایان فرآیند تا حدودی طبیعی به نظر می رسید.

یکی از مزیت‌های Aspire لاگ کردن است زیرا مطمئن نیستم داشبوردی وجود دارد که از ثبت تله متری باز به همان روانی که در داشبورد Aspire دریافت می‌کنیم پشتیبانی می‌کند یا خیر. از نظر ردیابی و معیارها، تنظیم به صورت دستی بسیار ساده است، اما آخرین باری که بررسی کردم، عملکرد ثبت تله متری باز هنوز عقب مانده بود.

بنابراین در پایان فرآیند، گردش کار .Net Aspire طبیعی به نظر می رسد و به شرط اینکه از Docker cli و استانداردهای مربوطه بدون گسترش عملکرد پشتیبانی کند، ممکن است انتخاب خوبی باشد.

مراحل بعدی

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

ارزیابی عملکرد مدل بسیار مهم است و این نیاز به درک بیشتر مفاهیم زیر کاپوت دارد. با توجه به اینکه ما تنظیمات اولیه و مفاهیم پوشش داده شده در این پست را پوشش داده ایم، در پست بعدی با اندازه گیری عملکرد سیستم خود و به طور بالقوه معرفی یک قسمت جلویی برای کمک به ارزیابی عملکرد مدل آزمایش خواهیم کرد.

لینک مخزن: https://github.com/syamaner/photo-search

اگر علاقه ای وجود دارد، می توانم مراحل اجرای کد را به صورت محلی در مخزن خلاصه کنم.

پیوندها

  • داکر
  • مبدل ها
  • مدل ها
  • Net Aspire
  • پایتون

نوشته های مشابه

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

دکمه بازگشت به بالا