Vytvoření fondu zdrojů pro SQL Server Machine Learning Services

platí pro: SQL Server 2016 (13.x) a novější verze

Zjistěte, jak můžete vytvořit a použít fond zdrojů pro správu úloh Python a R ve službě SQL Server Machine Learning Services.

Tento proces zahrnuje několik kroků:

  1. Zkontrolujte stav všech existujících fondů zdrojů. Je důležité pochopit, jaké služby používají existující prostředky.
  2. Upravte fondy zdrojů serveru.
  3. Vytvořte nový fond zdrojů pro externí procesy.
  4. Vytvořte klasifikační funkci pro identifikaci požadavků externích skriptů.
  5. Ověřte, že nový externí fond zdrojů zachycuje úlohy R nebo Python ze zadaných klientů nebo účtů.

Kontrola stavu existujících fondů zdrojů

  1. Pomocí příkazu, jako je následující, zkontrolujte prostředky přiřazené k výchozímu fondu pro server.

    SELECT * FROM sys.resource_governor_resource_pools WHERE name = 'default'
    

    Ukázkové výsledky

    pool_id name min_cpu_percent max_cpu_percent min_memory_percent max_memory_percent cap_cpu_percent min_iops_per_volume max_iops_per_volume
    2 výchozí 0 100 0 100 100 0 0
  2. Zkontrolujte prostředky přiřazené k výchozímu externímu fondu zdrojů.

    SELECT * FROM sys.resource_governor_external_resource_pools WHERE name = 'default'
    

    Ukázkové výsledky

    external_pool_id name max_cpu_percent max_memory_percent max_processes verze
    2 výchozí 100 20 0 2
  3. V rámci těchto výchozích nastavení serveru bude externí modul runtime pravděpodobně mít nedostatek prostředků k dokončení většiny úloh. Pokud chcete zlepšit prostředky, musíte upravit využití prostředků serveru následujícím způsobem:

    • Snižte maximální paměť počítače, kterou může databázový stroj používat.

    • Zvyšte maximální paměť počítače, kterou může externí proces použít.

Úprava využití prostředků serveru

  1. Spuštěním následujícího příkazu v sadě Management Studio omezte využití paměti SQL Server na 60% hodnoty v nastavení maximální paměti serveru.

    ALTER RESOURCE POOL "default" WITH (max_memory_percent = 60);
    
  2. Spuštěním následujícího příkazu omezte využití paměti externími procesy na 40% celkových prostředků počítače.

    ALTER EXTERNAL RESOURCE POOL "default" WITH (max_memory_percent = 40);
    
  3. Pokud chcete tyto změny vynutit, musíte překonfigurovat a restartovat Resource Governor následujícím způsobem:

    ALTER RESOURCE GOVERNOR RECONFIGURE;
    

    Note

    Jedná se pouze o navrhovaná nastavení, se kterými můžete začít; Úlohy strojového učení byste měli vyhodnotit s ohledem na jiné procesy serveru, abyste zjistili správnou rovnováhu pro vaše prostředí a úlohy.

Vytvoření uživatelem definovaného fondu externích zdrojů

  1. Všechny změny konfigurace Resource Governor se vynucují na celém serveru. Změny ovlivňují úlohy, které používají výchozí fondy pro server, a také úlohy, které používají externí fondy.

    Pokud chcete zajistit jemněji odstupňovanou kontrolu nad tím, které úlohy mají mít přednost, můžete vytvořit nový uživatelsky definovaný externí fond zdrojů. Definujte klasifikační funkci a přiřaďte ji k externímu fondu zdrojů. Klíčové slovo EXTERNAL je nové.

    Vytvořte nový uživatelsky definovaný externí fond zdrojů. V následujícím příkladu má fond název ds_ep.

    CREATE EXTERNAL RESOURCE POOL ds_ep WITH (max_memory_percent = 40);
    
  2. Vytvořte skupinu úloh s názvem ds_wg, kterou použijete pro správu požadavků na relace. Pro dotazy SQL použijete výchozí pool; pro všechny dotazy externích procesů použijete pool ds_ep.

    CREATE WORKLOAD GROUP ds_wg WITH (importance = medium) USING "default", EXTERNAL "ds_ep";
    

    Žádosti se přiřazují výchozí skupině vždy, když požadavek nejde klasifikovat nebo pokud dojde k jinému selhání klasifikace.

Další informace najdete v tématech skupina úloh Resource Governor a CREATE WORKLOAD GROUP (Transact-SQL).

Vytvoření klasifikační funkce pro strojové učení

Klasifikační funkce zkoumá příchozí úkoly. Určuje, zda je úkol, který lze spustit pomocí aktuálního fondu zdrojů. Úkoly, které nesplňují kritéria klasifikační funkce, se přiřazují zpět k výchozímu fondu zdrojů serveru.

  1. Začněte tím, že určíte, že funkce klasifikátoru by měla být použita Resource Governor k určení fondů zdrojů. Funkci klasifikátoru můžete přiřadit jako zástupný symbol null .

    ALTER RESOURCE GOVERNOR WITH (classifier_function = NULL);
    ALTER RESOURCE GOVERNOR RECONFIGURE;
    

    Další informace najdete v tématu ALTER RESOURCE GOVERNOR (Transact-SQL).

  2. Ve funkci klasifikátoru pro každý fond zdrojů definujte typ příkazů nebo příchozích požadavků, které by měly být přiřazeny fondu zdrojů.

    Například následující funkce vrátí název schématu přiřazeného uživatelsky definovanému fondu externích prostředků, pokud aplikace, která odeslala požadavek, je „Microsoft R Host“, „RStudio“ nebo „Mashup“; v opačném případě vrátí výchozí fond prostředků.

    USE master
    GO
    CREATE FUNCTION is_ds_apps()
    RETURNS sysname
    WITH schemabinding
    AS
    BEGIN
        IF program_name() in ('Microsoft R Host', 'RStudio', 'Mashup') RETURN 'ds_wg';
        RETURN 'default'
        END;
    GO
    
  3. Po vytvoření funkce překonfigurujte skupinu prostředků tak, aby přiřadila novou funkci klasifikátoru externí skupině prostředků, kterou jste definovali dříve.

    ALTER RESOURCE GOVERNOR WITH  (classifier_function = dbo.is_ds_apps);
    ALTER RESOURCE GOVERNOR RECONFIGURE;
    GO
    

Ověřte nové fondy zdrojů a afinitu

Zkontrolujte konfiguraci paměti serveru a procesor pro každou skupinu úloh. Ověřte, zda byly provedeny změny prostředků instance, kontrolou:

  • výchozí fond pro server SQL Server
  • výchozí fond zdrojů pro externí procesy
  • fond definovaný uživatelem pro externí procesy
  1. Spuštěním následujícího příkazu zobrazte všechny skupiny úloh:

    SELECT * FROM sys.resource_governor_workload_groups;
    

    Ukázkové výsledky

    group_id name důležitost request_max_memory_grant_percent request_max_cpu_time_sec request_memory_grant_timeout_sec max_dop group_max_requests pool_id pool_idd external_pool_id
    1 interní Středně 25 0 0 0 0 1 2
    2 výchozí Středně 25 0 0 0 0 2 2
    256 ds_wg Středně 25 0 0 0 0 2 256
  2. Pomocí nového zobrazení katalogu sys.resource_governor_external_resource_pools (Transact-SQL) zobrazte všechny fondy externích zdrojů.

    SELECT * FROM sys.resource_governor_external_resource_pools;
    

    Ukázkové výsledky

    external_pool_id name max_cpu_percent max_memory_percent max_processes verze
    2 výchozí 100 20 0 2
    256 ds_ep 100 40 0 1

    Další informace naleznete v tématu Zobrazení katalogu nástroje Resource Governor (Transact-SQL).

  3. Spuštěním následujícího příkazu zobrazíte informace o počítačových prostředcích, které jsou přiřazeny k externímu fondu zdrojů, pokud je to relevantní:

    SELECT * FROM sys.resource_governor_external_resource_pool_affinity;
    

    Nebudou zobrazeny žádné informace, protože fondy byly vytvořeny spřažením funkce AUTO. Další informace najdete v tématu sys.dm_resource_governor_resource_pool_affinity (Transact-SQL).

Další kroky

Další informace o správě prostředků serveru najdete tady:

Přehled zásad správného řízení prostředků pro strojové učení najdete tady: