OpenStack Yoga版安装笔记(十二)nova安装(下)

5、Install and configure controller node for Ubuntu

注意安装版本为:nova 25.2.2.dev5

5.1 Prerequisites

在安装和配置compute service之前,需要先创建数据库、服务凭证(用户名/密码)、服务API端点。

1、Create the database:

root@controller:~# mysql
Welcome to the MariaDB monitor.  Commands end with ; or \g.
Your MariaDB connection id is 31
Server version: 10.6.18-MariaDB-0ubuntu0.22.04.1 Ubuntu 22.04

Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

MariaDB [(none)]> CREATE DATABASE nova_api;
Query OK, 1 row affected (0.001 sec)

MariaDB [(none)]> CREATE DATABASE nova;
Query OK, 1 row affected (0.000 sec)

MariaDB [(none)]> CREATE DATABASE nova_cell0;
Query OK, 1 row affected (0.000 sec)

MariaDB [(none)]> GRANT ALL PRIVILEGES ON nova_api.* TO 'nova'@'localhost' \
    ->   IDENTIFIED BY 'openstack';
Query OK, 0 rows affected (0.002 sec)

MariaDB [(none)]> GRANT ALL PRIVILEGES ON nova_api.* TO 'nova'@'%' \
    ->   IDENTIFIED BY 'openstack';
Query OK, 0 rows affected (0.001 sec)

MariaDB [(none)]> GRANT ALL PRIVILEGES ON nova.* TO 'nova'@'localhost' \
    ->   IDENTIFIED BY 'openstack';
Query OK, 0 rows affected (0.001 sec)

MariaDB [(none)]> GRANT ALL PRIVILEGES ON nova.* TO 'nova'@'%' \
    ->   IDENTIFIED BY 'openstack';
Query OK, 0 rows affected (0.001 sec)

MariaDB [(none)]> GRANT ALL PRIVILEGES ON nova_cell0.* TO 'nova'@'localhost' \
    ->   IDENTIFIED BY 'openstack';
Query OK, 0 rows affected (0.001 sec)

MariaDB [(none)]> GRANT ALL PRIVILEGES ON nova_cell0.* TO 'nova'@'%' \
    ->   IDENTIFIED BY 'openstack';
Query OK, 0 rows affected (0.001 sec)

MariaDB [(none)]> quit
Bye
root@controller:~# 

2、Configure User and Endpoints

root@controller:~# . admin-openrc 
root@controller ~(admin/amdin)# openstack user create --domain default --password-prompt nova
User Password:
Repeat User Password:
+---------------------+----------------------------------+
| Field               | Value                            |
+---------------------+----------------------------------+
| domain_id           | default                          |
| enabled             | True                             |
| id                  | 107cee2c7dc34407bd41bea2e8ae4b2c |
| name                | nova                             |
| options             | {}                               |
| password_expires_at | None                             |
+---------------------+----------------------------------+
root@controller ~(admin/amdin)# openstack role add --project service --user nova admin
root@controller ~(admin/amdin)# openstack service create --name nova \
>   --description "OpenStack Compute" compute
+-------------+----------------------------------+
| Field       | Value                            |
+-------------+----------------------------------+
| description | OpenStack Compute                |
| enabled     | True                             |
| id          | 1b8f162ebcf848ee8bd69bc6b36a8dff |
| name        | nova                             |
| type        | compute                          |
+-------------+----------------------------------+
root@controller ~(admin/amdin)# openstack endpoint create --region RegionOne \
>   compute public http://controller:8774/v2.1
+--------------+----------------------------------+
| Field        | Value                            |
+--------------+----------------------------------+
| enabled      | True                             |
| id           | 56f7de504b8c46a8bf49ca95bb82b20a |
| interface    | public                           |
| region       | RegionOne                        |
| region_id    | RegionOne                        |
| service_id   | 1b8f162ebcf848ee8bd69bc6b36a8dff |
| service_name | nova                             |
| service_type | compute                          |
| url          | http://controller:8774/v2.1      |
+--------------+----------------------------------+
root@controller ~(admin/amdin)# openstack endpoint create --region RegionOne \
>   compute internal http://controller:8774/v2.1
+--------------+----------------------------------+
| Field        | Value                            |
+--------------+----------------------------------+
| enabled      | True                             |
| id           | 92a7d9dd7cce4678b280d143514bbed4 |
| interface    | internal                         |
| region       | RegionOne                        |
| region_id    | RegionOne                        |
| service_id   | 1b8f162ebcf848ee8bd69bc6b36a8dff |
| service_name | nova                             |
| service_type | compute                          |
| url          | http://controller:8774/v2.1      |
+--------------+----------------------------------+
root@controller ~(admin/amdin)# openstack endpoint create --region RegionOne \
>   compute admin http://controller:8774/v2.1
+--------------+----------------------------------+
| Field        | Value                            |
+--------------+----------------------------------+
| enabled      | True                             |
| id           | 9f112fb3f16441fc8f4314608aaad122 |
| interface    | admin                            |
| region       | RegionOne                        |
| region_id    | RegionOne                        |
| service_id   | 1b8f162ebcf848ee8bd69bc6b36a8dff |
| service_name | nova                             |
| service_type | compute                          |
| url          | http://controller:8774/v2.1      |
+--------------+----------------------------------+
root@controller ~(admin/amdin)# 

5.2 Install and configure components

1、安装软件包

root@controller:~# apt install nova-api nova-conductor nova-novncproxy nova-scheduler

2、Edit the /etc/nova/nova.conf file

root@controller:~# vi /etc/nova/nova.conf

[api_database]
# connection = sqlite:var/lib/nova/nova_api.sqlite
connection = mysql+pymysql://nova:openstack@controller/nova_api
...
[database]
# connection = sqlite:var/lib/nova/nova.sqlite
connection = mysql+pymysql://nova:openstack@controller/nova
...
[DEFAULT] 
transport_url = rabbit://openstack:openstack@controller:5672/
...
[api]
auth_strategy = keystone
...
[keystone_authtoken]
www_authenticate_uri = http://controller:5000/
auth_url = http://controller:5000/
memcached_servers = controller:11211
auth_type = password
project_domain_name = Default
user_domain_name = Default
project_name = service
username = nova
password = openstack
...
[service_user]
send_service_user_token = true
auth_url = https://controller/identity
auth_strategy = keystone
auth_type = password
project_domain_name = Default
project_name = service
user_domain_name = Default
username = nova
password = openstack
...
[DEFAULT]
my_ip = 10.0.20.11
...
[neutron]
auth_url = http://controller:5000
auth_type = password
project_domain_name = default
user_domain_name = default
region_name = RegionOne
project_name = service
username = neutron
password = openstack
service_metadata_proxy = true
metadata_proxy_shared_secret = openstack
...
[vnc]
enabled = true
server_listen = $my_ip
server_proxyclient_address = $my_ip
...
[glance]
api_servers = http://controller:9292
...
[oslo_concurrency]
lock_path = /var/lib/nova/tmp
...
[DEFAULT]
# log_dir = /var/log/nova
...
[placement]
region_name = RegionOne
project_domain_name = Default
project_name = service
auth_type = password
user_domain_name = Default
auth_url = http://controller:5000/v3
username = placement
password = openstack

3、Populate the nova-api database:

root@controller:~# su -s /bin/sh -c "nova-manage api_db sync" nova
Modules with known eventlet monkey patching issues were imported prior to eventlet monkey patching: urllib3. This warning can usually be ignored if the caller is only importing and not executing nova code.
2024-08-03 09:56:33.424 12329 INFO alembic.runtime.migration [-] Context impl MySQLImpl.
2024-08-03 09:56:33.425 12329 INFO alembic.runtime.migration [-] Will assume non-transactional DDL.
2024-08-03 09:56:33.432 12329 INFO alembic.runtime.migration [-] Running upgrade  -> d67eeaabee36, Initial version
2024-08-03 09:56:33.631 12329 INFO alembic.runtime.migration [-] Running upgrade d67eeaabee36 -> b30f573d3377, Remove unused build_requests columns
root@controller:~# 

4、Register the cell0 database:

root@controller:~# su -s /bin/sh -c "nova-manage cell_v2 map_cell0" nova
Modules with known eventlet monkey patching issues were imported prior to eventlet monkey patching: urllib3. This warning can usually be ignored if the caller is only importing and not executing nova code.
root@controller:~# 

5、Create the cell1 cell:

root@controller:~# su -s /bin/sh -c "nova-manage cell_v2 create_cell --name=cell1 --verbose" nova
Modules with known eventlet monkey patching issues were imported prior to eventlet monkey patching: urllib3. This warning can usually be ignored if the caller is only importing and not executing nova code.
--transport-url not provided in the command line, using the value [DEFAULT]/transport_url from the configuration file
--database_connection not provided in the command line, using the value [database]/connection from the configuration file
8b1967df-7901-42b3-8b03-fc4e884f490d
root@controller:~# 

6、Populate the nova database:

root@controller:~# su -s /bin/sh -c "nova-manage db sync" nova
Modules with known eventlet monkey patching issues were imported prior to eventlet monkey patching: urllib3. This warning can usually be ignored if the caller is only importing and not executing nova code.
2024-08-03 10:06:03.073 14092 INFO alembic.runtime.migration [req-2c88e019-957e-4116-8e7c-29dd6243047c - - - - -] Context impl MySQLImpl.
2024-08-03 10:06:03.073 14092 INFO alembic.runtime.migration [req-2c88e019-957e-4116-8e7c-29dd6243047c - - - - -] Will assume non-transactional DDL.
2024-08-03 10:06:03.080 14092 INFO alembic.runtime.migration [req-2c88e019-957e-4116-8e7c-29dd6243047c - - - - -] Running upgrade  -> 8f2f1571d55b, Initial version
2024-08-03 10:06:03.879 14092 INFO alembic.runtime.migration [req-2c88e019-957e-4116-8e7c-29dd6243047c - - - - -] Running upgrade 8f2f1571d55b -> 16f1fbcab42b, Resolve shadow table diffs
2024-08-03 10:06:03.899 14092 INFO alembic.runtime.migration [req-2c88e019-957e-4116-8e7c-29dd6243047c - - - - -] Context impl MySQLImpl.
2024-08-03 10:06:03.899 14092 INFO alembic.runtime.migration [req-2c88e019-957e-4116-8e7c-29dd6243047c - - - - -] Will assume non-transactional DDL.
2024-08-03 10:06:03.905 14092 INFO alembic.runtime.migration [req-2c88e019-957e-4116-8e7c-29dd6243047c - - - - -] Running upgrade  -> 8f2f1571d55b, Initial version
2024-08-03 10:06:04.629 14092 INFO alembic.runtime.migration [req-2c88e019-957e-4116-8e7c-29dd6243047c - - - - -] Running upgrade 8f2f1571d55b -> 16f1fbcab42b, Resolve shadow table diffs
root@controller:~# 

7、Verify nova cell0 and cell1 are registered correctly:

root@controller:~# su -s /bin/sh -c "nova-manage cell_v2 list_cells" nova
Modules with known eventlet monkey patching issues were imported prior to eventlet monkey patching: urllib3. This warning can usually be ignored if the caller is only importing and not executing nova code.
+-------+--------------------------------------+------------------------------------------+-------------------------------------------------+----------+
|  Name |                 UUID                 |              Transport URL               |               Database Connection               | Disabled |
+-------+--------------------------------------+------------------------------------------+-------------------------------------------------+----------+
| cell0 | 00000000-0000-0000-0000-000000000000 |                  none:/                  | mysql+pymysql://nova:****@controller/nova_cell0 |  False   |
| cell1 | 8b1967df-7901-42b3-8b03-fc4e884f490d | rabbit://openstack:****@controller:5672/ |    mysql+pymysql://nova:****@controller/nova    |  False   |
+-------+--------------------------------------+------------------------------------------+-------------------------------------------------+----------+
root@controller:~# 

5.3 Finalize installation

Restart the Compute services:

root@controller:~# service nova-api restart
root@controller:~# service nova-scheduler restart
root@controller:~# service nova-conductor restart
root@controller:~# service nova-novncproxy restart
root@controller:~# 
root@controller:~# systemctl  | grep nova
  nova-api.service                                                                                 loaded active running   OpenStack Compute API
  nova-conductor.service                                                                           loaded active running   OpenStack Compute Conductor
  nova-novncproxy.service                                                                          loaded active running   OpenStack Compute novncproxy
  nova-scheduler.service                                                                           loaded active running   OpenStack Compute Scheduler
root@controller:~# 

6、Install and configure a compute node for Ubuntu

计算服务(Compute Service)支持多种hypervisor来部署实例或虚拟机。为了简化配置,这里使用Quick EMUlator(QEMU)hypervisor,并在支持虚拟机硬件加速的计算节点上结合了基于内核的虚拟机(KVM)扩展。在不支持硬件加速的传统硬件上,可以使用通用的QEMU hypervisor。另外可以通过简单修改这里的配置,增加额外的计算节点,从而水平扩展计算环境。

6.1 Install and configure components

root@compute1:~# apt install nova-compute

6.2 Edit the /etc/nova/nova.conf file

root@compute1:~# vi /etc/nova/nova.conf 

[DEFAULT]

transport_url = rabbit://openstack:openstack@controller
...
[api]
auth_strategy = keystone
...
[keystone_authtoken]
www_authenticate_uri = http://controller:5000/
auth_url = http://controller:5000/
memcached_servers = controller:11211
auth_type = password
project_domain_name = Default
user_domain_name = Default
project_name = service
username = nova
password = openstack
...
[service_user]
send_service_user_token = true
auth_url = https://controller/identity
auth_strategy = keystone
auth_type = password
project_domain_name = Default
project_name = service
user_domain_name = Default
username = nova
password = openstack
...
[DEFAULT]
my_ip = 10.0.20.11
...
[neutron]
auth_url = http://controller:5000
auth_type = password
project_domain_name = default
user_domain_name = default
region_name = RegionOne
project_name = service
username = neutron
password = openstack
...
[glance]
api_servers = http://controller:9292
...
[oslo_concurrency]
lock_path = /var/lib/nova/tmp
...
[placement]
region_name = RegionOne
project_domain_name = Default
project_name = service
auth_type = password
user_domain_name = Default
auth_url = http://controller:5000/v3
username = placement
password = openstack

6.3 Finalize installation

1、检查计算节点(compute node)是否支持硬件虚拟化,返回1或者大于1,则支持;返回0则不支持:

root@compute1:~# egrep -c '(vmx|svm)' /proc/cpuinfo
8

2、重启compute service:

root@compute1:~# service nova-compute restart

root@compute1:~# systemctl status nova-compute
● nova-compute.service - OpenStack Compute
     Loaded: loaded (/lib/systemd/system/nova-compute.service; enabled; vendor preset: enabled)
     Active: active (running) since Sat 2024-08-03 12:09:38 UTC; 1min 13s ago
   Main PID: 1167 (nova-compute)
      Tasks: 23 (limit: 4514)
     Memory: 122.8M
        CPU: 1.924s
     CGroup: /system.slice/nova-compute.service
             └─1167 /usr/bin/python3 /usr/bin/nova-compute --config-file=/etc/nova/nova.conf --config-file=/etc/nova/nova-compute.conf --log-file=/var
/log/nova/nova-compute.log

Aug 03 12:09:38 compute1 systemd[1]: Started OpenStack Compute.
Aug 03 12:09:38 compute1 nova-compute[1167]: Modules with known eventlet monkey patching issues were imported prior to eventlet monkey patching: urlli
b3. This warning can usually be ignored if the caller is only importing and not executing nova code.
root@compute1:~# 

6.4 Add the compute node to the cell database

1、以admin的凭证获取admin-only openstack CLI,查看数据库是否有compute host:

root@controller ~(admin/amdin)# cat admin-openrc 
export OS_PROJECT_DOMAIN_NAME=Default
export OS_USER_DOMAIN_NAME=Default
export OS_PROJECT_NAME=admin
export OS_USERNAME=admin
export OS_PASSWORD=openstack
export OS_AUTH_URL=http://controller:5000/v3
export OS_IDENTITY_API_VERSION=3
export OS_IMAGE_API_VERSION=2
export PS1='\u@\h \W(admin/amdin)\$ '
root@controller ~(admin/amdin)# 
root@controller:~# . admin-openrc 
root@controller ~(admin/amdin)# openstack compute service list --service nova-compute
+--------------------------------------+--------------+----------+------+---------+-------+----------------------------+
| ID                                   | Binary       | Host     | Zone | Status  | State | Updated At                 |
+--------------------------------------+--------------+----------+------+---------+-------+----------------------------+
| c04e53a4-fdb8-4915-9b1a-f5d195e753c4 | nova-compute | compute1 | nova | enabled | up    | 2024-08-03T12:14:15.000000 |
+--------------------------------------+--------------+----------+------+---------+-------+----------------------------+

2、Discover compute hosts:

root@controller:~# su -s /bin/sh -c "nova-manage cell_v2 discover_hosts --verbose" nova
Modules with known eventlet monkey patching issues were imported prior to eventlet monkey patching: urllib3. This warning can usually be ignored if the caller is only importing and not executing nova code.
Found 2 cell mappings.
Skipping cell0 since it does not contain hosts.
Getting computes from cell 'cell1': 8b1967df-7901-42b3-8b03-fc4e884f490d
Checking host mapping for compute host 'compute1': 205c89e0-fb82-4def-a0f6-bfe4b120ab79
Creating host mapping for compute host 'compute1': 205c89e0-fb82-4def-a0f6-bfe4b120ab79
Found 1 unmapped computes in cell: 8b1967df-7901-42b3-8b03-fc4e884f490d
root@controller:~# 

root@controller:~# nova-manage cell_v2 list_hosts --cell_uuid 8b1967df-7901-42b3-8b03-fc4e884f490d
Modules with known eventlet monkey patching issues were imported prior to eventlet monkey patching: urllib3. This warning can usually be ignored if the caller is only importing and not executing nova code.
+-----------+--------------------------------------+----------+
| Cell Name |              Cell UUID               | Hostname |
+-----------+--------------------------------------+----------+
|   cell1   | 8b1967df-7901-42b3-8b03-fc4e884f490d | compute1 |
+-----------+--------------------------------------+----------+
root@controller:~# 
root@controller:~# su -s /bin/sh -c "nova-manage cell_v2 discover_hosts --verbose" nova
Modules with known eventlet monkey patching issues were imported prior to eventlet monkey patching: urllib3. This warning can usually be ignored if the caller is only importing and not executing nova code.
Found 2 cell mappings.
Skipping cell0 since it does not contain hosts.
Getting computes from cell 'cell1': 8b1967df-7901-42b3-8b03-fc4e884f490d
Found 0 unmapped computes in cell: 8b1967df-7901-42b3-8b03-fc4e884f490d
root@controller:~# 
root@controller:~# nova-manage cell_v2 list_hosts --cell_uuid 8b1967df-7901-42b3-8b03-fc4e884f490d
Modules with known eventlet monkey patching issues were imported prior to eventlet monkey patching: urllib3. This warning can usually be ignored if the caller is only importing and not executing nova code.
+-----------+--------------------------------------+----------+
| Cell Name |              Cell UUID               | Hostname |
+-----------+--------------------------------------+----------+
|   cell1   | 8b1967df-7901-42b3-8b03-fc4e884f490d | compute1 |
+-----------+--------------------------------------+----------+
root@controller:~#

当您添加新的计算节点时,您必须在控制节点上运行 nova-manage cell_v2 discover_hosts 命令来注册这些新的计算节点。

7、Verify operation

1、Source the admin credentials to gain access to admin-only CLI commands:

root@controller:~# . admin-openrc 
root@controller ~(admin/amdin)# 

2、List service components to verify successful launch and registration of each process:

root@controller ~(admin/amdin)# openstack compute service list

+--------------------------------------+----------------+------------+----------+---------+-------+----------------------------+
| ID                                   | Binary         | Host       | Zone     | Status  | State | Updated At                 |
+--------------------------------------+----------------+------------+----------+---------+-------+----------------------------+
| b935d869-0102-45c0-8b24-e338c5606890 | nova-scheduler | controller | internal | enabled | up    | 2024-08-03T12:36:55.000000 |
| e4929b42-af08-449f-b703-c0fc36c4220b | nova-conductor | controller | internal | enabled | up    | 2024-08-03T12:37:02.000000 |
| c04e53a4-fdb8-4915-9b1a-f5d195e753c4 | nova-compute   | compute1   | nova     | enabled | up    | 2024-08-03T12:36:56.000000 |
+--------------------------------------+----------------+------------+----------+---------+-------+----------------------------+

3、List API endpoints in the Identity service to verify connectivity with the Identity service:

root@controller ~(admin/amdin)# openstack catalog list
+-----------+-----------+-----------------------------------------+
| Name      | Type      | Endpoints                               |
+-----------+-----------+-----------------------------------------+
| nova      | compute   | RegionOne                               |
|           |           |   public: http://controller:8774/v2.1   |
|           |           | RegionOne                               |
|           |           |   internal: http://controller:8774/v2.1 |
|           |           | RegionOne                               |
|           |           |   admin: http://controller:8774/v2.1    |
|           |           |                                         |
| placement | placement | RegionOne                               |
|           |           |   internal: http://controller:8778      |
|           |           | RegionOne                               |
|           |           |   admin: http://controller:8778         |
|           |           | RegionOne                               |
|           |           |   public: http://controller:8778        |
|           |           |                                         |
| keystone  | identity  | RegionOne                               |
|           |           |   admin: http://controller:5000/v3/     |
|           |           | RegionOne                               |
|           |           |   internal: http://controller:5000/v3/  |
|           |           | RegionOne                               |
|           |           |   public: http://controller:5000/v3/    |
|           |           |                                         |
| glance    | image     | RegionOne                               |
|           |           |   admin: http://controller:9292         |
|           |           | RegionOne                               |
|           |           |   internal: http://controller:9292      |
|           |           | RegionOne                               |
|           |           |   public: http://controller:9292        |
|           |           |                                         |
+-----------+-----------+-----------------------------------------+
root@controller ~(admin/amdin)# 

4、List images in the Image service to verify connectivity with the Image service:

root@controller ~(admin/amdin)# openstack image list
+--------------------------------------+--------+--------+
| ID                                   | Name   | Status |
+--------------------------------------+--------+--------+
| 429decdd-9230-49c0-b735-70364c226eb5 | cirros | active |
+--------------------------------------+--------+--------+

5、Check the cells and placement API are working successfully and that other necessary prerequisites are in place:

root@controller ~(admin/amdin)# nova-status upgrade check
Modules with known eventlet monkey patching issues were imported prior to eventlet monkey patching: urllib3. This warning can usually be ignored if the caller is only importing and not executing nova code.
+-------------------------------------------+
| Upgrade Check Results                     |
+-------------------------------------------+
| Check: Cells v2                           |
| Result: Success                           |
| Details: None                             |
+-------------------------------------------+
| Check: Placement API                      |
| Result: Success                           |
| Details: None                             |
+-------------------------------------------+
| Check: Cinder API                         |
| Result: Success                           |
| Details: None                             |
+-------------------------------------------+
| Check: Policy Scope-based Defaults        |
| Result: Success                           |
| Details: None                             |
+-------------------------------------------+
| Check: Policy File JSON to YAML Migration |
| Result: Success                           |
| Details: None                             |
+-------------------------------------------+
| Check: Older than N-1 computes            |
| Result: Success                           |
| Details: None                             |
+-------------------------------------------+
| Check: hw_machine_type unset              |
| Result: Success                           |
| Details: None                             |
+-------------------------------------------+
| Check: Service User Token Configuration   |
| Result: Success                           |
| Details: None                             |
+-------------------------------------------+
root@controller ~(admin/amdin)#

8、关闭虚机,拍摄快照

关闭controller node和compute node虚机,拍摄快照(可参考之前的章节)。

相关推荐
AndyFrank1 分钟前
mac crontab 不能使用问题简记
linux·运维·macos
筱源源17 分钟前
Kafka-linux环境部署
linux·kafka
Yawesh_best1 小时前
思源笔记轻松连接本地Ollama大语言模型,开启AI写作新体验!
笔记·语言模型·ai写作
算法与编程之美1 小时前
文件的写入与读取
linux·运维·服务器
xianwu5431 小时前
反向代理模块
linux·开发语言·网络·git
Amelio_Ming1 小时前
Permissions 0755 for ‘/etc/ssh/ssh_host_rsa_key‘ are too open.问题解决
linux·运维·ssh
Ven%2 小时前
centos查看硬盘资源使用情况命令大全
linux·运维·centos
CXDNW2 小时前
【网络面试篇】HTTP(2)(笔记)——http、https、http1.1、http2.0
网络·笔记·http·面试·https·http2.0
使者大牙2 小时前
【大语言模型学习笔记】第一篇:LLM大规模语言模型介绍
笔记·学习·语言模型
ssf-yasuo3 小时前
SPIRE: Semantic Prompt-Driven Image Restoration 论文阅读笔记
论文阅读·笔记·prompt