Membuat kumpulan sumber daya untuk SQL Server Machine Learning Services

Berlaku untuk: SQL Server 2016 (13.x) dan versi yang lebih baru

Pelajari cara membuat dan menggunakan kumpulan sumber daya untuk mengelola beban kerja Python dan R di SQL Server Machine Learning Services.

Proses ini mencakup beberapa langkah:

  1. Tinjau status kumpulan sumber daya yang ada. Penting bahwa Anda memahami layanan apa yang menggunakan sumber daya yang ada.
  2. Mengubah kumpulan sumber daya server.
  3. Buat kumpulan sumber daya baru untuk proses eksternal.
  4. Buat fungsi klasifikasi untuk mengidentifikasi permintaan skrip eksternal.
  5. Verifikasi bahwa kumpulan sumber daya eksternal baru menangkap pekerjaan R atau Python dari klien atau akun yang ditentukan.

Meninjau status kumpulan sumber daya yang ada

  1. Gunakan pernyataan seperti berikut ini untuk memeriksa sumber daya yang ditetapkan ke kumpulan default untuk server.

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

    Hasil sampel

    pool_id nama min_cpu_percent max_cpu_percent min_memory_percent max_memory_percent cap_cpu_percent min_iops_per_volume max_iops_per_volume
    2 Default. 0 100 0 100 100 0 0
  2. Periksa sumber daya yang ditetapkan ke kumpulan sumber daya eksternal default.

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

    Hasil sampel

    external_pool_id nama max_cpu_percent max_memory_percent max_processes versi
    2 default 100 20 0 2
  3. Di bawah pengaturan default server ini, runtime eksternal mungkin akan memiliki sumber daya yang tidak cukup untuk menyelesaikan sebagian besar tugas. Untuk meningkatkan sumber daya, Anda harus mengubah penggunaan sumber daya server sebagai berikut:

    • Kurangi memori komputer maksimum yang dapat digunakan oleh mesin database.

    • Tingkatkan memori komputer maksimum yang dapat digunakan oleh proses eksternal.

Mengubah penggunaan sumber daya server

  1. Di Management Studio, jalankan pernyataan berikut untuk membatasi penggunaan memori SQL Server hingga 60% dari nilai dalam pengaturan 'memori server maks'.

    ALTER RESOURCE POOL "default" WITH (max_memory_percent = 60);
    
  2. Jalankan pernyataan berikut untuk membatasi penggunaan memori dengan proses eksternal hingga 40% dari total sumber daya komputer.

    ALTER EXTERNAL RESOURCE POOL "default" WITH (max_memory_percent = 40);
    
  3. Untuk menerapkan perubahan ini, Anda harus mengonfigurasi ulang dan memulai ulang Resource Governor sebagai berikut:

    ALTER RESOURCE GOVERNOR RECONFIGURE;
    

    Catatan

    Ini hanya pengaturan yang disarankan untuk memulai; Anda harus mengevaluasi tugas pembelajaran mesin Anda mengingat proses server lain untuk menentukan keseimbangan yang benar untuk lingkungan dan beban kerja Anda.

Membuat kumpulan sumber daya eksternal yang ditentukan pengguna

  1. Semua perubahan pada konfigurasi Resource Governor diberlakukan di seluruh server secara keseluruhan. Perubahan memengaruhi beban kerja yang menggunakan kumpulan default untuk server, serta beban kerja yang menggunakan kumpulan eksternal.

    Untuk memberikan kontrol yang lebih halus di mana beban kerja harus diutamakan, Anda dapat membuat kumpulan sumber daya eksternal baru yang ditentukan pengguna. Tentukan fungsi klasifikasi dan tetapkan ke kumpulan sumber daya eksternal. Kata kunci EXTERNAL baru.

    Buat kumpulan sumber daya eksternal baru yang ditentukan pengguna. Dalam contoh berikut, kumpulan diberi nama ds_ep.

    CREATE EXTERNAL RESOURCE POOL ds_ep WITH (max_memory_percent = 40);
    
  2. Buat grup beban kerja bernama ds_wg untuk digunakan dalam mengelola permintaan sesi. Untuk kueri SQL, Anda akan menggunakan kumpulan default; untuk semua kueri proses eksternal akan menggunakan kumpulan ds_ep .

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

    Permintaan ditetapkan ke grup default setiap kali permintaan tidak dapat diklasifikasikan, atau jika ada kegagalan klasifikasi lainnya.

Untuk informasi selengkapnya, lihat Resource Governor Grup Beban Kerja dan BUAT GRUP BEBAN KERJA (Transact-SQL).

Membuat fungsi klasifikasi untuk pembelajaran mesin

Fungsi klasifikasi memeriksa tugas masuk. Ini menentukan apakah tugas adalah tugas yang dapat dijalankan menggunakan kumpulan sumber daya saat ini. Tugas yang tidak memenuhi kriteria fungsi klasifikasi ditetapkan kembali ke kumpulan sumber daya default server.

  1. Mulailah dengan menentukan bahwa fungsi pengklasifikasi harus digunakan oleh Resource Governor untuk menentukan kumpulan sumber daya. Anda dapat menetapkan null sebagai tempat penampung untuk fungsi pengklasifikasi.

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

    Untuk informasi selengkapnya, lihat ALTER RESOURCE GOVERNOR (Transact-SQL).

  2. Dalam fungsi pengklasifikasi untuk setiap kumpulan sumber daya, tentukan jenis pernyataan atau permintaan masuk yang harus ditetapkan ke kumpulan sumber daya.

    Misalnya, fungsi berikut mengembalikan nama skema yang ditetapkan ke kumpulan sumber daya eksternal yang ditentukan pengguna jika aplikasi yang mengirim permintaan adalah 'Microsoft R Host', 'RStudio', atau 'Mashup'; jika tidak, ia mengembalikan kumpulan sumber daya default.

    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. Ketika fungsi telah dibuat, konfigurasi ulang grup sumber daya untuk menetapkan fungsi pengklasifikasi baru ke grup sumber daya eksternal yang Anda tentukan sebelumnya.

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

Memverifikasi kumpulan sumber daya dan afinitas baru

Periksa konfigurasi memori server dan CPU untuk setiap grup beban kerja. Verifikasi bahwa perubahan sumber daya instans telah dilakukan, dengan meninjau:

  • kumpulan default untuk server SQL Server
  • kumpulan sumber daya default untuk proses eksternal
  • kumpulan yang ditentukan pengguna untuk proses eksternal
  1. Jalankan pernyataan berikut untuk melihat semua grup beban kerja:

    SELECT * FROM sys.resource_governor_workload_groups;
    

    Hasil sampel

    group_id nama Penting 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 internal Medium 25 0 0 0 0 1 2
    2 default Medium 25 0 0 0 0 2 2
    256 ds_wg Medium 25 0 0 0 0 2 256
  2. Gunakan tampilan katalog baru, sys.resource_governor_external_resource_pools (Transact-SQL), untuk melihat semua kumpulan sumber daya eksternal.

    SELECT * FROM sys.resource_governor_external_resource_pools;
    

    Hasil sampel

    external_pool_id nama max_cpu_percent max_memory_percent max_processes versi
    2 default 100 20 0 2
    256 ds_ep 100 40 0 1

    Untuk informasi selengkapnya, lihat Resource Governor Tampilan Katalog (Transact-SQL).

  3. Jalankan pernyataan berikut untuk mengembalikan informasi tentang sumber daya komputer yang difinisikan ke kumpulan sumber daya eksternal, jika berlaku:

    SELECT * FROM sys.resource_governor_external_resource_pool_affinity;
    

    Tidak ada informasi yang akan ditampilkan karena kumpulan dibuat dengan afinitas AUTO. Untuk informasi selengkapnya, lihat sys.dm_resource_governor_resource_pool_affinity (Transact-SQL).

Langkah berikutnya

Untuk informasi selengkapnya tentang mengelola sumber daya server, lihat:

Untuk gambaran umum tata kelola sumber daya untuk pembelajaran mesin, lihat: