목차
하이라이트
기술 주변기기 일체 포함 GPT-4는 프로그래밍의 달인이라고 확신합니다!

GPT-4는 프로그래밍의 달인이라고 확신합니다!

Apr 29, 2023 pm 05:28 PM
프로그램 제작자 프로그램 작성 gpt-4

지난주에 수학 교육을 위한 GPT-4에 대한 소개를 보냈습니다. 많은 사람들이 충격을 받았고 이것이 교육 산업에 혁명을 일으킬 수 있다고 느꼈습니다.

프로그래밍 분야에서는 어떤 성능을 발휘하나요? 프로그래머를 대체할 수 있는지에 대해서는 이야기하지 않겠습니다. 아직 더 많은 테스트와 피드백이 필요하지만, 수학과 같은 프로그래밍을 가르칠 수 있는지 먼저 시도해 보고 싶습니다.

Java 프로그래밍에서 이해하기 어려운 개념인 동적 프록시를 발견하고 테스트해봤습니다.

다음은 Java 프로그래밍을 배우는 초보자인 척하고 프록시 패턴이 나에게 어떻게 가르쳐주는지 알지 못했던 전체 대화입니다.

내용이 조금 길기 때문에 인내심을 가지고 읽어보시고 AI의 능력을 느껴보시길 권합니다.

정말 시청이 어려우신 분들은 끝까지 스킵하시고 하이라이트를 직접 시청하셔도 됩니다.

【Liu Xin】: 당신이 항상 소크라테스식으로 질문에 대답하는 교사라고 가정해 보세요. 당신은 나에게 직접적으로 답을 주지는 않을 것이지만, 내가 생각하도록 이끌어 줄 것입니다.

【GPT】: 물론이죠. 질문이 있으시면 생각하고 토론할 수 있도록 안내해 드리겠습니다.

[Liu Xin]: 저는 Java를 배우고 있는데 동적 프록시라는 개념이 있는데 이해가 안 되네요.

[GPT]: 좋습니다. Socratic 방식을 사용하여 Java 동적 프록시에 대해 논의해 보겠습니다. 먼저 프록시 패턴을 이해해야 합니다. 에이전시 모델에 대해 무엇을 알고 있나요? 프록시 패턴의 목적은 무엇입니까?

【Liu Xin】: 한 사람이 다른 사람을 대신한다는 뜻인가요?

【GPT】: 네, 어떤 의미에서 프록시 패턴은 소프트웨어 디자인에서 유사한 개념을 구현하는 것에 관한 것입니다. 이 경우 한 개체(에이전트)가 다른 개체(대상 개체)를 대신하여 특정 작업을 수행합니다. 이제 생각해 보세요. 왜 프로그래밍에서 프록시 패턴을 사용해야 할까요? 어떤 상황에서 프록시 모드를 사용하는 것이 도움이 됩니까?

[Liu Xin]: 모르겠어요

[GPT]: 상관없습니다. 몇 가지 가능한 이유를 함께 살펴보겠습니다. 프록시 패턴은 객체에 액세스하기 전이나 후에 몇 가지 추가 작업을 수행해야 하는 경우와 같은 많은 시나리오에서 유용합니다. 예를 들어 다음과 같은 상황에서 프록시 패턴을 사용할 수 있습니다.

대상 개체에 대한 액세스 제어(액세스 제어)

대상 개체가 작업을 수행하기 전과 후에 추가 기능(예: 로깅, 캐싱 등) 추가

지연 로딩, 실제로 필요할 때만 대상 객체를 생성한 후에만

이것들은 프록시 패턴의 일부 적용 시나리오일 뿐입니다. 그렇다면 이러한 시나리오에서 동적 프록시가 어떻게 작동한다고 생각하시나요? 동적 프록시와 정적 프록시의 차이점은 무엇입니까?

[Liu Xin] 무슨 뜻인지 모르겠습니다.

[GPT] 간단한 예를 통해 프록시 모드에 대한 이해를 도와드리겠습니다.

데이터를 가져오기 위해 원격 서버에 연결해야 하는 애플리케이션이 있다고 가정해 보세요. 이 경우 원격 서버와의 연결 설정 및 데이터 가져오기를 담당하는 RemoteServerConnection이라는 클래스를 만들 수 있습니다.

이제 애플리케이션은 원격 서버에 연결하기 전에 네트워크 상태를 확인하고 데이터를 가져온 후 로깅하는 등 몇 가지 추가 작업을 수행해야 합니다. 이때 프록시 모드를 사용할 수 있습니다.

RemoteServerConnection과 동일한 인터페이스를 가지고 있지만 네트워크 상태 확인 및 로깅 기능을 추가하는 RemoteServerConnectionProxy라는 클래스를 만들 수 있습니다. 응용 프로그램은 RemoteServerConnection을 직접 사용하는 대신 RemoteServerConnectionProxy를 사용하여 데이터를 가져옵니다. RemoteServerConnectionProxy는 추가 작업을 처리한 다음 필요할 때 애플리케이션을 대신하여 RemoteServerConnection과 통신합니다.

이 예에서 RemoteServerConnectionProxy는 특정 작업을 수행하기 위해 RemoteServerConnection(대상 개체)을 나타내는 프록시입니다.

이제 프록시 모델에 대한 기본적인 이해를 마쳤으니 동적 프록시를 살펴보겠습니다. 위의 예에서는 별도의 프록시 클래스(정적 프록시)를 만들었습니다. 정적 프록시와 달리 동적 프록시는 미리 작성되지 않고 런타임에 동적으로 생성됩니다. 동적 에이전트는 다양한 시나리오에 보다 유연하게 대응할 수 있습니다.

Java에서 동적 프록시는 일반적으로 InvocationHandler 인터페이스를 구현하고 Proxy 클래스를 사용하여 구현됩니다. 그렇다면 어떤 상황에서는 동적 프록시가 정적 프록시보다 장점이 있는 이유를 생각해 보세요.

[Liu Xin]: 잠깐만요. 먼저 정적 프록시에 대한 이야기를 마치겠습니다.

RemoteServerConnectionProxy는 이전 클래스에 네트워크 상태 확인 및 로그 기록 기능을 일부 추가했는데 왜 RemoteServerConnection과 동일한 인터페이스를 갖고 있나요?

【GPT】: 이전에 명확하게 설명하지 못해 죄송합니다. 프록시 패턴의 목적을 검토해 보겠습니다. 하나의 개체(프록시)가 다른 개체(대상 개체)를 대신하여 특정 작업을 수행합니다. 프록시 객체가 대상 객체를 대신하여 작업을 성공적으로 수행하려면 동일한 인터페이스가 필요합니다. 이렇게 하면 클라이언트 코드는 프록시 개체 또는 대상 개체와 상호 작용하는지 여부에 신경 쓰지 않습니다. 두 개체는 동일한 인터페이스를 갖기 때문입니다.

우리의 경우 RemoteServerConnectionProxy(프록시 개체)와 RemoteServerConnection(대상 개체)은 동일한 인터페이스를 갖습니다. 이렇게 하면 응용 프로그램이 이 두 클래스를 투명하게 사용할 수 있기 때문입니다. 애플리케이션에서 프록시를 사용하기로 결정한 경우 프록시 개체와 대상 개체가 모두 동일한 인터페이스를 구현하므로 클라이언트 코드를 변경할 필요가 없습니다. 그렇기 때문에 프록시 개체와 대상 개체의 인터페이스가 동일해야 합니다.

또한 동일한 인터페이스를 갖는다는 것은 작업을 수행할 때 프록시 객체가 대상 객체의 메서드를 호출할 수 있다는 것을 의미합니다. 프록시 개체는 적절한 시간에 대상 개체에 제어를 전달해야 하므로 이는 액세스 제어, 로깅 등과 같은 추가 기능을 구현하는 데 중요합니다.

[Liu Xin]: 알겠습니다. 이것이 프록시 모델입니다. 그렇다면 동적 프록시란 무엇인가요?

【GPT】: 좋습니다. 이제 프록시 모드를 이해했으므로 동적 프록시로 넘어가겠습니다.

동적 프록시와 정적 프록시의 주요 차이점은 생성 방법입니다. 정적 프록시는 미리 작성된 프록시 클래스입니다. 즉, 각 대상 클래스에 대해 별도의 프록시 클래스를 만들어야 합니다. 그러나 동적 프록시는 런타임 시 동적으로 생성되므로 소스 코드를 변경하지 않고도 여러 클래스에 대한 일반 프록시를 생성할 수 있습니다. 이렇게 하면 코드 중복이 줄어들고 유지 관리성이 향상됩니다.

Java에서 동적 프록시는 주로 java.lang.reflect.Proxy 클래스와 java.lang.reflect.InvocationHandler 인터페이스를 통해 구현됩니다. 다음은 동적 프록시의 기본 단계입니다.

프록시 객체에 대한 메서드 호출 처리를 담당하는 InvocationHandler 구현 클래스를 정의합니다. 이 클래스에서는 필요에 따라 로깅, 액세스 제어 등의 추가 작업을 추가할 수 있습니다.

동적 프록시를 생성하려면 Proxy.newProxyInstance() 메서드를 사용하세요. 이 메소드는 클래스 로더, 인터페이스 배열(프록시 클래스가 구현해야 하는 인터페이스) 및 InvocationHandler 인스턴스의 세 가지 매개변수를 수신합니다. 이 메소드는 지정된 인터페이스를 구현하는 프록시 객체를 반환합니다.

클라이언트 코드에서 생성된 동적 프록시 개체를 사용하여 메서드를 호출합니다. 프록시 객체에서 메서드를 호출하면 해당 호출이 InvocationHandler 인스턴스의 호출() 메서드로 전달됩니다.

이 방법을 사용하면 각 클래스에 대해 별도의 프록시 클래스를 작성할 필요 없이 런타임 시 하나 이상의 클래스에 대한 동적 프록시를 만들 수 있습니다.

이제 동적 프록시의 개념을 이해했으므로 정적 프록시와 비교하여 동적 프록시의 장점과 한계에 대해 생각해 보십시오.

[Liu Xin]은 혼란스러워 보였습니다.

[GPT] 상관없습니다. 간단한 예를 통해 동적 프록시에 대한 이해를 도와드리겠습니다.

이체 작업을 수행하기 위한 transfer() 메서드가 있는 Bank 인터페이스가 있다고 가정해 보겠습니다. 우리는 이 인터페이스에 로깅 기능을 추가하고 싶지만 Bank 인터페이스의 구현을 수정하고 싶지는 않습니다. 이때 동적 프록시를 사용할 수 있습니다.

먼저 InvocationHandler를 구현해야 합니다. 이 클래스는 프록시 객체에 대한 메서드 호출을 처리하고 로깅 기능을 추가하는 일을 담당합니다.

public class LoggingHandler implements InvocationHandler {
private Object target;
public LoggingHandler(Object target) {
this.target = target;
}


@Override
public Object invoke(Object proxy, Method method, Object[] args) throws Throwable {
System.out.println("日志记录:开始执行 " + method.getName() + " 方法");
Object result = method.invoke(target, args);
System.out.println("日志记录:执行 " + method.getName() + " 方法完成");
return result;
}
}
로그인 후 복사

이제 Proxy.newProxyInstance() 메서드를 사용하여 동적을 생성할 수 있습니다. 은행 인터페이스의 프록시입니다. Bank 인터페이스의 구현 클래스 인스턴스를 LoggingHandler에 전달해야 합니다.

Bank realBank = new RealBank(); // 假设RealBank是Bank接口的一个实现
InvocationHandler handler = new LoggingHandler(realBank);




Bank proxyBank = (Bank) Proxy.newProxyInstance(
realBank.getClass().getClassLoader(),
realBank.getClass().getInterfaces(),
handler
);
로그인 후 복사

이제 ProxyBank를 사용하여 transfer() 메서드를 호출하면 로깅 함수가 자동으로 추가됩니다.

proxyBank.transfer();
로그인 후 복사

이 예에서는 역학을 볼 수 있습니다. 프록시의 주요 이점은 각 클래스에 대해 별도의 프록시 클래스를 작성하는 대신 런타임에 하나 이상의 클래스에 대해 일반 프록시를 생성할 수 있다는 것입니다. 동시에 코드를 더욱 유연하고 유지 관리하기 쉽게 만듭니다.

그러나 동적 프록시에도 몇 가지 제한 사항이 있습니다. 예를 들어 Java에서 동적 프록시는 인터페이스를 구현하는 클래스에 대해서만 프록시를 생성할 수 있습니다.

이 예가 동적 프록시의 개념을 이해하는 데 도움이 되기를 바랍니다. 아직도 궁금한 점이 있으시면 언제든지 문의해 주세요.

[Liu Xin]: 귀하의 예에서는 은행 인터페이스에 로깅 기능을 추가하고 싶습니다. 그러면 BankProxy를 작성하고 로깅 코드만 추가하면 될까요? 왜 InvocationHandler를 사용하기 위해 수고를 해야 할까요?

[GPT]: 아주 좋은 질문을 하셨습니다. 어떤 경우에는 정적 프록시(예: 언급한 BankProxy)를 사용하면 실제로 우리가 원하는 기능을 달성할 수 있습니다. 그러나 더 복잡한 시나리오에서는 동적 프록시가 몇 가지 중요한 이점을 가져올 수 있습니다.

다양성: 동적 프록시는 각 클래스에 대해 별도의 프록시 클래스를 작성할 필요 없이 여러 클래스 및 인터페이스에 대한 프록시를 생성할 수 있습니다. 로깅, 액세스 제어 등과 같은 동일한 기능을 여러 인터페이스에 추가해야 하는 경우 동적 프록시를 사용하면 중복 코드를 줄이고 코드 재사용성을 향상시킬 수 있습니다.

쉬운 유지 관리: 나중에 프록시 기능을 수정하거나 추가해야 하는 경우 동적 프록시를 사용하는 것이 더 쉬울 것입니다. 정적 프록시의 경우 각 프록시 클래스를 하나씩 수정해야 하며, 동적 프록시의 경우 InvocationHandler 구현만 수정하면 됩니다. 이렇게 하면 원래 클래스와 인터페이스를 변경하지 않고도 에이전트의 동작을 쉽게 수정할 수 있습니다.

분리: 동적 프록시는 프록시 논리를 비즈니스 논리와 분리하는 데 도움이 됩니다. 프록시 로직을 수정해야 하는 경우 원래 클래스와 인터페이스를 변경할 필요가 없습니다. 이렇게 하면 코드를 더 쉽게 이해하고 유지 관리할 수 있습니다.

그래도 동적 프록시가 항상 최선의 솔루션은 아닙니다. 어떤 경우에는 정적 프록시가 귀하의 요구에 더 잘 맞을 수도 있습니다. 동적 프록시와 정적 프록시 중 하나를 선택할 때는 특정 시나리오와 요구 사항에 따라 장단점을 비교해야 합니다.

이 답변이 동적 프록시와 정적 프록시의 차이점을 더 잘 이해하는 데 도움이 되기를 바랍니다. 더 궁금한 점이 있으시면 언제든지 문의해 주세요.

[Liu Xin]: 알겠습니다. 그런데 왜 Proxy.newProxyInstance를 통해 새 클래스를 만들어야 하나요? 원본 RealBank 클래스를 직접 수정하는 것이 좋지 않나요? [GPT]: 귀하의 질문은 코드 설계 및 디커플링 개념과 관련되어 있습니다. 로깅 기능을 추가하기 위해 RealBank 클래스를 직접 수정하는 것은 확실히 가능하지만 이로 인해 다음과 같은 문제가 발생할 수 있습니다.

단일 책임 원칙: 단일 책임 원칙에 따르면 클래스는 하나의 명확한 기능만 담당해야 합니다. RealBank 클래스의 주요 역할은 Bank 인터페이스를 구현하고 은행 관련 비즈니스 로직을 처리하는 것입니다. RealBank 클래스에 로깅 기능을 추가하면 비즈니스 로직과 로깅을 모두 담당하게 되어 단일 책임 원칙을 위반할 수 있습니다. 프록시를 사용하면 이 두 가지 책임을 분리하여 각 클래스가 잘 정의된 기능에 집중할 수 있습니다.

디커플링: RealBank 클래스에 직접 로깅 기능을 추가하는 경우 나중에 로깅 기능을 수정하거나 제거해야 한다면 RealBank 클래스의 구현을 변경해야 합니다. 이로 인해 RealBank 클래스가 로깅 기능과 긴밀하게 결합되어 코드 유지 관리가 줄어들 수 있습니다. 프록시를 사용하면 RealBank 클래스에서 로깅 기능을 분리할 수 있으므로 로깅 기능을 수정하거나 제거해야 하는 경우 RealBank 클래스를 변경할 필요가 없습니다.

재사용성: 여러 클래스에 로깅 기능을 추가하고 싶다고 가정해 보겠습니다. 각 클래스의 구현을 직접 수정하면 코드가 많이 중복됩니다. 프록시(특히 동적 프록시)를 사용하면 여러 클래스에 공통 로깅 기능을 제공할 수 있으므로 코드 중복이 줄어들고 코드 재사용성이 향상됩니다.

간단히 말해서, 프록시를 사용하면 단일 책임 원칙을 따르고, 분리를 달성하고, 코드 재사용성을 향상시킬 수 있습니다. 원본 클래스를 직접 수정하는 것이 가능한 경우도 있지만 프록시를 사용하면 코드 디자인과 유지 관리 효율성이 향상될 수 있는 시나리오가 많이 있습니다.

이 답변이 도움이 되기를 바랍니다. 더 궁금한 점이 있으시면 언제든지 문의해 주세요.

[Liu Xin]: Proxy.newProxyInstance의 매개변수는 너무 복잡합니다.

InvocationHandler를 전달하는 것은 이해합니다. 다른 두 매개변수를 전달해야 하는 이유는 무엇입니까?

[GPT]: Proxy.newProxyInstance 메서드에는 세 가지 매개 변수가 필요합니다. 해당 역할을 자세히 설명하겠습니다.

ClassLoader: 클래스 로더는 바이트 코드를 Java 가상 머신에 로드하는 역할을 합니다. 클래스 로더를 전달하는 목적은 Proxy.newProxyInstance 메소드가 클래스 정의를 찾을 위치와 프록시 클래스를 메모리에 로드하는 방법을 알 수 있도록 하는 것입니다. 일반적으로 우리는 프록시 클래스가 대상 클래스와 동일한 클래스 로더에 로드되기를 원하기 때문에 대상 클래스의 클래스 로더를 사용합니다. 이렇게 하면 프록시 클래스가 대상 클래스의 인터페이스에 액세스할 수 있습니다. 대부분의 경우, 타겟 클래스의 클래스 로더는 target.getClass().getClassLoader()를 통해 얻을 수 있습니다.

인터페이스 배열(Interface[]): 인터페이스 배열은 프록시 클래스가 구현해야 하는 인터페이스를 정의합니다. 이러한 인터페이스는 일반적으로 대상 클래스에 의해 구현된 인터페이스와 동일하므로 프록시 클래스가 대상 클래스를 투명하게 대체할 수 있습니다. 프록시 개체의 메서드가 호출되면 InvocationHandler는 이러한 인터페이스에 정의된 메서드를 처리합니다. 대부분의 경우 대상 클래스에 의해 구현된 인터페이스는 target.getClass().getInterfaces()를 통해 얻을 수 있습니다.

InvocationHandler 인스턴스: 이 매개변수는 프록시 객체에 대한 메서드 호출 처리를 담당하는 InvocationHandler 구현의 인스턴스입니다. 프록시 객체의 메서드가 호출되면 InvocationHandler의 호출() 메서드가 실행됩니다. InvocationHandler 인스턴스를 Proxy.newProxyInstance 메소드에 전달하여 프록시 객체의 동작을 사용자 정의할 수 있습니다.

Proxy.newProxyInstance 메서드에는 세 가지 매개 변수가 필요하지만 모두 프록시 클래스가 올바르게 로드되고, 대상 클래스의 인터페이스를 구현하고, 프록시 객체의 동작을 사용자 정의할 수 있는지 확인하기 위한 것입니다. 이 설명이 이러한 매개변수의 기능을 이해하는 데 도움이 되기를 바랍니다. 더 궁금한 점이 있으시면 언제든지 문의해 주세요.

[Liu Xin]: 답변이 좀 길긴 했지만 그래도 이해가 되네요

[GPT]: 이해해주셔서 기뻐요. 내가 자세히 설명하는 이유는 여러분이 이 방법의 매개 변수와 그 기능을 완전히 이해할 수 있도록 하기 위한 것입니다. 공부하다가 다른 질문이 생기거나, 좀 더 간결한 설명이 필요하다면, 편하게 질문해주세요. 나는 당신을 돕기 위해 최선을 다할 것입니다. 당신의 공부에 행운이 있기를 바랍니다!

하이라이트

교수법 측면에서:

1. 간단한 개념(정적 프록시)에서 시작하는데 매우 좋습니다!

2. 개념이 이해가 안 될 때 예를 들어 설명해주셔서 너무 좋아요!

3. 제가 의도적으로 이해하지 못하는 부분을 표현하면 매번 더 자세히 설명될 수 있습니다.

4. 동적 에이전트를 소개하는 데 약간 열심이며, 반복되는 질문 중에 기본 개념으로 돌아갈 수 있습니다.

기술적으로는 다음과 같이 정확하게 설명됩니다.

1. 동적 프록시가 있는 이유와 동적 프록시의 차이점.

2. 프록시가 원래 클래스 인터페이스와 동일해야 하는 이유는 무엇입니까?

3. 동적 프록시를 생성하려면 세 가지 매개변수가 필요한 이유.

4. 일부 디자인 원칙(단일 책임), 분리, 재사용 및 기타 기능을 도입했습니다.

교수 방법이든 지식 교육이든 GPT-4는 훌륭한 강사가 있어도 아마 그럴 것 같아요.

조금 장황한 느낌이 들긴 하지만 음성효과까지 지원하면 더 좋을 것 같아요.

GPT-4가 내부적으로 어떻게 수행되든 외부 세계에 대한 프로그래밍 마스터처럼 작동합니다. 이는 동적 프록시의 개념을 숙지할 뿐만 아니라 이를 지원하는 많은 예제도 포함합니다. 단순한 것부터 깊은 것까지 매우 강력합니다. 나중에 디자인 기능을 시험해 보고 공유하겠습니다.

위 내용은 GPT-4는 프로그래밍의 달인이라고 확신합니다!의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.

핫 AI 도구

Undresser.AI Undress

Undresser.AI Undress

사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover

AI Clothes Remover

사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool

Undress AI Tool

무료로 이미지를 벗다

Clothoff.io

Clothoff.io

AI 옷 제거제

AI Hentai Generator

AI Hentai Generator

AI Hentai를 무료로 생성하십시오.

인기 기사

R.E.P.O. 에너지 결정과 그들이하는 일 (노란색 크리스탈)
3 몇 주 전 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. 최고의 그래픽 설정
3 몇 주 전 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. 아무도들을 수없는 경우 오디오를 수정하는 방법
3 몇 주 전 By 尊渡假赌尊渡假赌尊渡假赌
WWE 2K25 : Myrise에서 모든 것을 잠금 해제하는 방법
3 몇 주 전 By 尊渡假赌尊渡假赌尊渡假赌

뜨거운 도구

메모장++7.3.1

메모장++7.3.1

사용하기 쉬운 무료 코드 편집기

SublimeText3 중국어 버전

SublimeText3 중국어 버전

중국어 버전, 사용하기 매우 쉽습니다.

스튜디오 13.0.1 보내기

스튜디오 13.0.1 보내기

강력한 PHP 통합 개발 환경

드림위버 CS6

드림위버 CS6

시각적 웹 개발 도구

SublimeText3 Mac 버전

SublimeText3 Mac 버전

신 수준의 코드 편집 소프트웨어(SublimeText3)

세계에서 가장 강력한 오픈 소스 MoE 모델이 여기에 있습니다. 중국의 기능은 GPT-4와 비슷하며 가격은 GPT-4-Turbo의 거의 1%에 불과합니다. 세계에서 가장 강력한 오픈 소스 MoE 모델이 여기에 있습니다. 중국의 기능은 GPT-4와 비슷하며 가격은 GPT-4-Turbo의 거의 1%에 불과합니다. May 07, 2024 pm 04:13 PM

기존 컴퓨팅을 능가할 뿐만 아니라 더 낮은 비용으로 더 효율적인 성능을 달성하는 인공 지능 모델을 상상해 보세요. 이것은 공상과학 소설이 아닙니다. DeepSeek-V2[1], 세계에서 가장 강력한 오픈 소스 MoE 모델이 여기에 있습니다. DeepSeek-V2는 경제적인 훈련과 효율적인 추론이라는 특징을 지닌 전문가(MoE) 언어 모델의 강력한 혼합입니다. 이는 236B 매개변수로 구성되며, 그 중 21B는 각 마커를 활성화하는 데 사용됩니다. DeepSeek67B와 비교하여 DeepSeek-V2는 더 강력한 성능을 제공하는 동시에 훈련 비용을 42.5% 절감하고 KV 캐시를 93.3% 줄이며 최대 생성 처리량을 5.76배로 늘립니다. DeepSeek은 일반 인공지능을 연구하는 회사입니다.

대형모델간 75만 라운드 1대1 대결, GPT-4가 우승, 라마3가 5위 대형모델간 75만 라운드 1대1 대결, GPT-4가 우승, 라마3가 5위 Apr 23, 2024 pm 03:28 PM

Llama3에 대해 새로운 테스트 결과가 공개되었습니다. 대형 모델 평가 커뮤니티 LMSYS가 공개한 대형 모델 순위 목록에서 Llama3는 5위에 올랐으며, 영어 부문에서는 GPT-4와 함께 공동 1위를 차지했습니다. 다른 벤치마크와는 그림이 다릅니다. 이 목록은 모델 간 1:1 대결을 기반으로 하며, 네트워크 전체의 평가자들이 각자의 제안과 점수를 내립니다. 결국 Llama3가 5위를 차지했고, GPT-4와 Claude3 Super Cup Opus의 세 가지 버전이 그 뒤를 이었습니다. 영어 싱글 목록에서는 Llama3가 Claude를 제치고 GPT-4와 동점을 기록했습니다. 이 결과에 대해 Meta의 수석 과학자 LeCun은 매우 기뻐했으며 트윗을 통해 다음과 같이 말했습니다.

정규 표현식을 사용하여 PHP 배열에서 중복 값 제거 정규 표현식을 사용하여 PHP 배열에서 중복 값 제거 Apr 26, 2024 pm 04:33 PM

정규식을 사용하여 PHP 배열에서 중복 값을 제거하는 방법: 정규식 /(.*)(.+)/i를 사용하여 중복 항목을 일치시키고 바꿉니다. 배열 요소를 반복하고 preg_match를 사용하여 일치하는지 확인합니다. 일치하면 값을 건너뛰고, 그렇지 않으면 중복 값이 ​​없는 새 배열에 추가합니다.

인간 두뇌의 가장 상세한 3D 지도가 사이언스에 게재되었습니다! GPT-4 매개변수는 인간의 0.2%에 불과합니다. 인간 두뇌의 가장 상세한 3D 지도가 사이언스에 게재되었습니다! GPT-4 매개변수는 인간의 0.2%에 불과합니다. May 29, 2024 pm 05:03 PM

참깨 크기의 인간 뇌 조직은 GPT-4 1개에 해당하는 시냅스 크기를 가지고 있습니다! Google과 Harvard는 협력하여 인간 뇌의 일부에 대한 나노 규모 모델링을 수행했으며 해당 논문은 Science에 게재되었습니다. 이것은 현재까지 인간 뇌의 가장 크고 가장 상세한 복제품으로, 뇌의 시냅스 연결 네트워크를 처음으로 보여줍니다. 초고해상도를 통해 H01이라고 불리는 재구성을 통해 인간 두뇌에 대해 이전에는 볼 수 없었던 세부 사항이 드러났습니다. 이 프로젝트의 교신 저자인 하버드 대학의 Lichtman 교수는 이전에 이렇게 복잡한 시냅스 네트워크를 실제로 본 사람은 아무도 없다고 말했습니다. 이 모델링 결과는 뇌의 작용에 대한 더 깊은 이해를 얻고 뇌 기능과 질병에 대한 추가 연구에 영감을 주는 데 도움이 될 것입니다. 이 연구가 1입방밀리미터를 포함했다는 점도 언급할 가치가 있습니다.

프로그래밍이란 무엇을 위한 것이며 프로그래밍을 배워서 무슨 소용이 있습니까? 프로그래밍이란 무엇을 위한 것이며 프로그래밍을 배워서 무슨 소용이 있습니까? Apr 28, 2024 pm 01:34 PM

1. 프로그래밍은 웹사이트, 모바일 애플리케이션, 게임, 데이터 분석 도구 등 다양한 소프트웨어와 애플리케이션을 개발하는 데 사용될 수 있습니다. 응용 분야는 매우 광범위하여 과학 연구, 의료, 금융, 교육, 엔터테인먼트 등 거의 모든 산업을 포괄합니다. 2. 프로그래밍을 배우면 문제 해결 능력과 논리적 사고 능력을 향상하는 데 도움이 됩니다. 프로그래밍하는 동안 우리는 문제를 분석 및 이해하고, 해결책을 찾고, 이를 코드로 변환해야 합니다. 이러한 사고방식은 우리의 분석적이고 추상적인 능력을 키우고 실제적인 문제를 해결하는 능력을 향상시킬 수 있습니다.

오픈 소스 모델이 처음으로 GPT-4를 획득했습니다! Arena의 최신 전투 보고서는 열띤 논쟁을 불러일으켰습니다. Karpathy: 이것이 제가 신뢰하는 유일한 목록입니다. 오픈 소스 모델이 처음으로 GPT-4를 획득했습니다! Arena의 최신 전투 보고서는 열띤 논쟁을 불러일으켰습니다. Karpathy: 이것이 제가 신뢰하는 유일한 목록입니다. Apr 10, 2024 pm 03:16 PM

GPT-4를 이길 수 있는 오픈소스 모델이 등장했습니다! 대형 모델 경기장의 최신 전투 보고서: 1040억 매개변수 오픈 소스 모델 CommandR+가 GPT-4-0314와 동점을 이루고 GPT-4-0613을 능가하여 6위로 올랐습니다. Image 이것은 또한 대형 모델 분야에서 GPT-4를 능가한 최초의 개방형 모델이기도 합니다. 대형 모델 경기장은 마스터 Karpathy가 신뢰하는 유일한 테스트 벤치마크 중 하나입니다. AI 유니콘 Cohere의 이미지 CommandR+. 이 대형 모델 스타트업의 공동 창업자이자 CEO는 바로 트랜스포머(일명 밀 수확자)의 최연소 작가인 에이든 고메즈다. 이 배틀 리포트가 나오자마자 또 다른 빅 모델 클럽들의 물결이 시작됐다.

코딩의 핵심: 초보자를 위한 Python의 힘 활용 코딩의 핵심: 초보자를 위한 Python의 힘 활용 Oct 11, 2024 pm 12:17 PM

Python은 배우기 쉽고 강력한 기능을 통해 초보자에게 이상적인 프로그래밍 입문 언어입니다. 기본 사항은 다음과 같습니다. 변수: 데이터(숫자, 문자열, 목록 등)를 저장하는 데 사용됩니다. 데이터 유형: 변수의 데이터 유형(정수, 부동 소수점 등)을 정의합니다. 연산자: 수학 연산 및 비교에 사용됩니다. 제어 흐름: 코드 실행(조건문, 루프) 흐름을 제어합니다.

Python을 사용한 문제 해결: 초보 코더로서 강력한 솔루션 잠금 해제 Python을 사용한 문제 해결: 초보 코더로서 강력한 솔루션 잠금 해제 Oct 11, 2024 pm 08:58 PM

Python은 초보자에게 문제 해결 능력을 부여합니다. 사용자 친화적인 구문, 광범위한 라이브러리 및 변수, 조건문 및 루프 사용 효율적인 코드 개발과 같은 기능을 제공합니다. 데이터 관리에서 프로그램 흐름 제어 및 반복 작업 수행에 이르기까지 Python은 제공합니다.

See all articles