Tools
- Linux 服务器上配置 Samba 以供 macOS 访问共享文件夹,附:如何在 Mac 上映射网络驱动器
当配置 Samba 服务器以供 macOS 访问共享文件夹时,以下是详细的步骤:
安装 Samba 服务器:
在 Linux 服务器上使用适当的软件包管理器安装 Samba 服务器。具体命令可能因 Linux 发行版而异。例如,在 Ubuntu 上,可以使用以下命令安装 Samba:sudo apt-get install samba
打开 Samba 配置文件:
使用你喜欢的文本编辑器(如vi、nano等)打开 Samba 的配置文件smb.conf
:sudo vi /etc/samba/smb.conf
定义共享文件夹:
在smb.conf
文件中,你需要添加共享文件夹的配置。找到[global]
段,并在其下面添加以下内容:[shared] comment = Shared Folder path = /path/to/shared/folder writable = yes guest ok = no
将
/path/to/shared/folder
替换为实际的共享文件夹路径。[shared]
是共享文件夹的名称,你可以自定义。comment
是对该共享文件夹的描述,writable
指定是否允许写入访问,guest ok
指定是否允许匿名访问。配置访问权限:
可以通过添加适当的权限选项来控制共享文件夹的访问权限。例如,如果只想允许特定用户访问,可以添加以下行:valid users = username
将
username
替换为允许访问共享文件夹的用户名。保存并关闭文件:
在编辑完smb.conf
文件后,保存并关闭该文件。设置 Samba 用户密码:
使用以下命令为 Samba 用户设置密码。这些用户可以访问共享文件夹:sudo smbpasswd -a username
将
username
替换为要设置密码的用户名。按照提示输入密码并确认。启动 Samba 服务:
使用以下命令启动 Samba 服务:sudo service smbd start
配置防火墙(如果需要):
如果你的 Linux 服务器上启用了防火墙,你需要确保 Samba 服务的端口(默认是 TCP 端口 139 和 445)是开放的。具体的防火墙配置方法可能因不同的防火墙软件而异。在 macOS 上访问共享文件夹:
在 macOS 上打开 Finder 应用程序,并在菜单栏中选择「前往」->「连接服务器」,或使用快捷键 Command + K。在弹出的对话框中,输入以下地址:smb://linux_server_ip/shared
将
linux_server_ip
替换为 Linux 服务器的 IP 地址
当使用 Conda 管理虚拟环境时,以下是一些常用的相关指令:
创建虚拟环境:
conda create --name myenv # 创建名为 myenv 的虚拟环境
激活虚拟环境:
在 Windows 上:conda activate myenv # 激活名为 myenv 的虚拟环境
在 macOS 和 Linux 上:
source activate myenv # 激活名为 myenv 的虚拟环境
退出虚拟环境:
在 Windows 上:conda deactivate # 退出当前虚拟环境
在 macOS 和 Linux 上:
source deactivate # 退出当前虚拟环境
查看已有虚拟环境:
conda info --envs # 查看所有已存在的虚拟环境
删除虚拟环境:
conda env remove --name myenv # 删除名为 myenv 的虚拟环境
安装包到虚拟环境:
conda install package_name # 安装名为 package_name 的包到激活的虚拟环境
查看当前虚拟环境中已安装的包:
conda list # 查看当前虚拟环境中已安装的包
导出虚拟环境配置:
conda env export > environment.yml # 将虚拟环境配置导出到 environment.yml 文件
从配置文件创建虚拟环境:
conda env create -f environment.yml # 从 environment.yml 文件创建虚拟环境
更新虚拟环境中的包:
conda update package_name # 更新虚拟环境中名为 package_name 的包
这些指令可以帮助你在 Conda 中创建、管理和操作虚拟环境以及安装和管理软件包。请注意,某些指令可能会因 Conda 版本而略有不同,因此在使用时请查阅相关文档或使用
conda --help
获取更多帮助信息。
- 使用 Pipenv 管理虚拟环境:Easily Manage Packages and Virtual Environments
- Importing Your Own Python Modules Properly 以及How to Use the __init__.py File
- What is init.py file in Python Packages? Explained with Example
在Python中,包(Package)和模块(Module)是组织代码的两种不同方式,它们有着一些区别和特点。
模块(Module):
- 定义:模块是一个单一的文件,其中包含一组相关的代码。它可以包含变量、函数、类等。
- 组织性:模块用于将相关的代码组织在一起,以便于管理和重用。
- 导入:您可以使用
import
语句将模块中的内容导入到其他文件中,以便在其他地方使用。 - 命名空间:模块具有自己的命名空间,模块中定义的变量、函数和类在该命名空间中。
包(Package):
- 定义:包是一个由一组相关模块组成的目录,其中包含一个特殊的
__init__.py
文件。这个文件用于指示Python解释器该目录是一个包。 - 组织性:包用于更高级别的代码组织,可以将不同模块按主题或功能组织在不同的包中。
- 导入:您可以使用点号(
.
)语法来导入包中的模块,例如import package.module
。 - 子包:包内部可以包含子包,从而形成一个层次化的组织结构。
总结来说,模块是一个文件,用于组织相关的代码片段,而包是一个包含模块的目录,用于更高级别的组织和管理。通常,如果您只有少量的相关代码,可以使用模块来组织;如果您有多个相关模块,可以将它们放在一个包中。包的层次结构可以帮助更好地组织大型项目,并提供更好的命名空间隔离。
- What is init.py file in Python Packages? Explained with Example
示例:当创建一个简单的 Python 包时,以如下示例演示
假设我们要创建一个名为 “mathutils” 的包,其中包含一些数学实用函数。
创建包目录结构:
在您的工作目录中,创建一个新的文件夹,作为您的包的主目录。mkdir mathutils cd mathutils
创建
__init__.py
文件:
在包目录中创建一个名为__init__.py
的文件,用于指示 Python 解释器该文件夹是一个包。touch __init__.py
创建模块文件:
在包目录中,创建一个名为operations.py
的模块文件,其中包含一些数学操作函数。touch operations.py
编辑
operations.py
文件:
在operations.py
文件中,编写一些数学操作函数。def add(a, b): return a + b def subtract(a, b): return a - b
编辑
__init__.py
文件:
在__init__.py
文件中,将模块中的函数导入到包级别。from .operations import *
测试:
创建一个名为test_mathutils.py
的测试文件,并编写测试用例来测试您的数学操作函数。from mathutils.operations import add, subtract def test_add(): assert add(2, 3) == 5 def test_subtract(): assert subtract(5, 2) == 3
创建
setup.py
文件(可选):
创建一个名为setup.py
的文件来提供包的元数据。from setuptools import setup, find_packages setup( name='mathutils', version='0.1', packages=find_packages(), )
测试和安装:
使用以下命令在虚拟环境中测试和安装您的包:pip install .
使用包:
在其他项目中,您可以使用以下方式导入和使用您的包:from mathutils.operations import add, subtract print(add(5, 3)) # Output: 8 print(subtract(10, 4)) # Output: 6
这是一个简单的示例,说明了如何创建一个 Python 包并在其他项目中使用它。对于更复杂的包,您可能需要添加更多功能、文档和测试,以确保其正确性和可维护性。
Make Python code 1000x Faster with Numba
- Numba的性能优势在于处理数值密集型的计算任务,而对于其他类型的任务可能效果不明显。因此,在使用Numba时,建议将重点放在需要大量数值计算的部分代码上,以获得最佳的加速效果
命令行含义
在命令行说明中,不同括号的含义通常如下所示,并附有一些示例:
尖括号(<>) - 表示必需参数:
尖括号用于表示必须提供的参数,这些参数是命令执行所必需的。您需要将尖括号中的内容替换为实际的值。示例:
git commit -m "<commit_message>"
在这里,
<commit_message>
是您需要替换为实际提交信息的参数。中括号([]) - 表示可选参数:
中括号用于表示可选的参数,这些参数可以选择性地提供给命令。您可以根据需要决定是否使用这些参数。示例:
mkdir [-p] <directory_name>
这里,
-p
是一个可选的标志,用于创建父目录。<directory_name>
是必需的目录名称。大括号({}) - 表示选择一个选项:
大括号用于表示一组选项中的一个选择,您需要从这些选项中选择一个来使用。示例:
scp <file> {user1@host1:directory | user2@host2:directory}
在这里,您需要选择要传输到的远程主机和目录。
竖线(|) - 表示选择一个选项:
竖线用于表示在多个选项中选择一个。示例:
display {line | bar | pie} <data>
这里,您可以选择要使用的图表类型。
圆括号(()) - 表示组合多个参数:
圆括号用于将多个参数组合在一起,通常用于说明参数的顺序。示例:
chmod (u+r | g+w | o-x) <file>
在这里,您可以选择要对文件进行的权限更改操作。
这些示例说明了不同括号在命令行说明中的使用。括号的含义和用法可能会因命令而异,因此在使用命令时,始终要查看具体的命令行帮助或文档,以确保正确理解和使用参数和选项。
- gradio
- 有了 Gradio,可以根据机器学习模型或数据科学工作流程快速创建一个漂亮的用户界面,让用户通过拖放自己的图片、粘贴文本、录制自己的声音和与你的演示demo进行交互,所有这些都可以通过浏览器进行
- langchain
- Question Answering over specific documents
- Chatbots
- Agents
- ImageBind: Holistic AI learning across six modalities,论文,示例
Hardware
AI Preliminary
- 可视化基本概念
-
- 四个方向
- 1.efficient (PEFT):做效率提升的(哪里慢提升哪里的速度,哪里heavy使其轻量级)
- 2.existing stuff(pretained model):直接基于别人的大预训练模型, new directions: 做新方向,避免撞车,竞争,刷榜
- 3.plugin and play: 做即插即用的模块(模型,loss,数据增广的方法等等),可以在不同领域应用
- 4.dataset,evaluation,and survey: 构建数据集,做评测,综述等文章
- 四个方向
Basic Network
- 基本网络比较
- Understanding and visualizing ResNets (以及作者的其他网络说明)
- This difference on the skip connections are the so called in the paper as Identity Shortcut and Projection Shortcut. The identity shortcut is the one we have already discussed, simply bypassing the input volume to the addition operator. The projection shortcut performs a convolution operation to ensure the volumes at this addition operation are the same size.
- Depth-wise Convolution and Depth-wise Separable Convolution
- Transformer
- Vision Transformer (ViT) 用于图片分类
- 动态卷积神经网络_Slides_Video_Huang Gao
AI应用 & 发展
- 应用于语义分割问题的深度学习技术综述
- 智源论坛 面向快速推理的神经网络结构
- Chat with NeRF: Grounding 3D Objects in Neural Radiance Field through Dialog:通过对话,找到图中的物体
- 大语言模型用于机器人:Knowing When to Do What and When to Ask for Help
- 多模态问答系统
NAS
-
- 机器学习,低比特,NN训练硬件加速器,神经网络架构搜索
论文
- 深度卷积神经网络架构设计及优化问题研究-Li Xiang
- Neural Architecture Search: A Survey
- DARTS: DIFFERENTIABLE ARCHITECTURE SEARCH,对应的论文解释和github
- FBNet: Hardware-Aware Efficient ConvNet Design via Differentiable Neural Architecture Search
- video:Neural Architecture Search without Training (Paper Explained)
- Voxel 相关的NASCodedVTR: Codebook-based Sparse Voxel TRansformer with Geometric Guidance
- MIT Song Han Lab
- AI Lecture,其中 Lecture 7,8,9 包含了 Neural Architecture Search (Part I, II, III) | MIT 6.S965 的课件及Youtube Video
Preliminary
- Embedding Vector 嵌入向量 + sentence-transformers 工具
- Sentence Transformers: Multilingual Sentence, Paragraph, and Image Embeddings
- 嵌入向量(Embedding Vector)是一種將詞語、句子或者整篇文檔轉化為固定維度的數值向量的技術,這種技術有助於捕捉語義關係並用於許多自然語言處理任務。利用嵌入向量,我們可以將詞語的相似性和差異性量化,使得我們能夠在數學上處理語言問題。例如,我們可以利用嵌入向量來解決詞義歧義問題,或者在推薦系統中捕捉用戶的喜好。此外,透過深度學習模型,嵌入向量可以學習到更深入、更豐富的語義關係,從而提升模型的效能和準確度。
- openai-cookbook,包含openai的使用示例
仿真环境
- rmus sim2real 2023挑战赛仿真环境:四轮带机械臂机器人
LLM and Robot
survey
- The Rise and Potential of Large Language Model Based Agents: A Survey
- github仓,包含每种分类的代码及论文
多机协同交互
- Building Cooperative Embodied Agents Modularly with Large Language Models
- 提出了一个新的框架,利用 LLM 的多智能体协作和测试它在各种具体的环境。该框架使得具象化代理能够计划、沟通和与其他具象化代理或人类合作,有效地完成长期任务
- ProAgent: Building Proactive Cooperative AI with Large Language Models
- 暂无代码
- 提出了 ProAgent,这是一个利用大型语言模型(LLM)的新型框架,它能够形成一个积极主动的代理,具有分析当前上下文、预测队友意图并根据上述推理制定自己的策略的能力。此外,ProAgent 框架具有高度的模块化和可解释性,促进了无缝集成,以解决各种协调场景。在 OvercookAI 环境下进行的实验评估揭示了 ProAgent 显著的性能优势
- 论文提到的baseline
- Large language models as commonsense knowledge for large-scale task planning
- NIPS2023
- TaPA:Embodied Task Planning with Large Language Models
- ai2thor上做任务规划